คำถามติดแท็ก rails-activerecord

การใช้งานการแม็ปเชิงสัมพันธ์เชิงวัตถุ (ORM) โดยใช้รูปแบบ Active Record ในกรอบ Ruby on Rails

3
ตรวจสอบเอกลักษณ์ของหลายคอลัมน์
มีวิธีการทางรถไฟในการตรวจสอบว่าบันทึกจริงไม่ซ้ำกันและไม่เพียงคอลัมน์? ตัวอย่างเช่นโมเดลมิตรภาพ / ตารางไม่ควรมีบันทึกเหมือนกันหลายอย่างเช่น: user_id: 10 | friend_id: 20 user_id: 10 | friend_id: 20

3
การทำความเข้าใจ: ตัวเลือกแหล่งที่มาของ has_one / has_many ผ่านทางราง
โปรดช่วยฉันในการทำความเข้าใจ:sourceตัวเลือกการhas_one/has_many :throughเชื่อมโยง คำอธิบาย Rails API ทำให้ฉันเข้าใจน้อยมาก "ระบุชื่อการเชื่อมโยงแหล่งที่มาที่ใช้โดยhas_many :through => :queriesใช้เฉพาะในกรณีที่ชื่อไม่สามารถอนุมานได้จากการเชื่อมโยงhas_many :subscribers, :through => :subscriptionsจะค้นหาอย่างใดอย่างหนึ่ง:subscribersหรือ:subscriberบนSubscriptionเว้นแต่:sourceจะได้รับ"


8
รวมสอง ActiveRecord :: วัตถุที่เกี่ยวข้อง
สมมติว่าฉันมีวัตถุสองรายการต่อไปนี้: first_name_relation = User.where(:first_name => 'Tobias') # ActiveRecord::Relation last_name_relation = User.where(:last_name => 'Fünke') # ActiveRecord::Relation เป็นไปได้หรือไม่ที่จะรวมความสัมพันธ์ทั้งสองเข้าด้วยกันเพื่อสร้างActiveRecord::Relationวัตถุหนึ่งที่มีทั้งสองเงื่อนไข? หมายเหตุ: ฉันทราบว่าฉันสามารถรวบรวมสิ่งที่จะทำให้เกิดพฤติกรรมนี้ได้สิ่งที่ฉันสนใจจริงๆคือกรณีที่ฉันมีActiveRecord::Relationวัตถุสองชิ้นแยกกัน

5
ตรวจสอบว่ามีตารางอยู่ใน Rails หรือไม่
ฉันมีงานเรคที่ไม่สามารถทำงานได้หากไม่มีตาราง ฉันทำงานกับวิศวกรมากกว่า 20 คนในเว็บไซต์ดังนั้นฉันต้องการตรวจสอบให้แน่ใจว่าพวกเขาได้ย้ายตารางก่อนที่พวกเขาจะสามารถทำงานคราดซึ่งจะเติมข้อมูลในตารางนั้น AR มีวิธีการเช่นนี้Table.existsหรือไม่? ฉันจะแน่ใจได้อย่างไรว่าพวกเขาย้ายข้อมูลตารางเรียบร้อยแล้ว

21
เพิ่มการประทับเวลาลงในตารางที่มีอยู่
ฉันต้องการเพิ่มการประทับเวลา ( created_at& updated_at) ลงในตารางที่มีอยู่ ฉันลองใช้รหัสต่อไปนี้ แต่มันไม่ทำงาน class AddTimestampsToUser < ActiveRecord::Migration def change_table add_timestamps(:users) end end

11
Rails ActiveRecord วันที่ระหว่าง
ฉันต้องการสอบถามความคิดเห็นที่เกิดขึ้นในหนึ่งวัน created_atสนามเป็นส่วนหนึ่งของการประทับเวลาที่มาตรฐานคือ date_selectวันที่ที่เลือกมาจาก ฉันActiveRecordจะใช้ทำสิ่งนั้นได้อย่างไร ฉันต้องการบางสิ่งเช่น: "SELECT * FROM comments WHERE created_at BETWEEN '2010-02-03 00:00:00' AND '2010-02-03 23:59:59'"

3
Rails - ซ้อนรวมอยู่ใน Active Records แล้วหรือยัง?
ฉันมีรายการเหตุการณ์ที่ฉันเรียกมา ฉันกำลังพยายามรวมผู้ใช้ทุกคนที่เกี่ยวข้องกับกิจกรรมนี้และทุกโปรไฟล์ที่เชื่อมโยงกับผู้ใช้แต่ละคน ผู้ใช้จะถูกรวมไว้ แต่ไม่รวมถึงโปรไฟล์ของพวกเขา ฉันจะทำสิ่งนี้ได้อย่างไร Event.includes(:users [{profile:}]) เอกสารดูเหมือนจะไม่ชัดเจน: http://guides.rubyonrails.org/active_record_querying.html

9
Rails ขยาย ActiveRecord :: ฐาน
ฉันได้อ่านเกี่ยวกับวิธีการขยาย ActiveRecord: คลาสพื้นฐานดังนั้นแบบจำลองของฉันจะมีวิธีพิเศษบางอย่าง วิธีง่าย ๆ ในการขยาย (การสอนทีละขั้นตอน) คืออะไร?

4
Rails 3 ประเภทข้อมูล?
ฉันจะหารายการประเภทข้อมูลที่สามารถใช้ได้ในราง 3 (เช่นข้อความสตริงจำนวนเต็มลอยวันที่ ฯลฯ ) ฉันจะเรียนรู้เกี่ยวกับสิ่งใหม่ ๆ แต่ฉันชอบที่จะมีรายการที่ฉันสามารถอ้างอิงได้ง่าย

25
บันทึกแบบสุ่มใน ActiveRecord
ฉันต้องการรับการบันทึกแบบสุ่มจากตารางผ่าน ActiveRecord ฉันได้ตามตัวอย่างจากJamis บั๊กจาก 2006 อย่างไรก็ตามฉันได้พบวิธีอื่นผ่านการค้นหาของ Google (ไม่สามารถกำหนดแอตทริบิวต์ด้วยลิงก์เนื่องจากข้อ จำกัด ของผู้ใช้ใหม่): rand_id = rand(Model.count) rand_record = Model.first(:conditions => ["id >= ?", rand_id]) ฉันอยากรู้ว่าคนอื่น ๆ ที่นี่ทำได้อย่างไรหรือถ้าใครรู้ว่าจะมีประสิทธิภาพมากขึ้นอย่างไร

6
ขอบเขตกับแลมบ์ดาและการโต้แย้งในสไตล์ Rails 4 หรือไม่
ฉันสงสัยว่าจะทำสิ่งต่อไปนี้อย่างไรใน Rails 4 หรือถ้าฉันใช้ Rails 3 ในการใช้แลมบ์ดาที่สามารถทะเลาะกันด้วยวิธีเดียวกับ 4 เช่นเดียวกับ 3 ฉันค่อนข้างใหม่กับ Rails 3 และพยายามทำงานกับตัวอย่างบางส่วนที่ใช้งาน Rails 4 นี่คือรหัส Rails 3 ของฉัน: class Person < ActiveRecord::Base scope :find_lazy, lambda {|id| where(:id => id)} end # In console I can call Person.find_lazy(1) ดังนั้นถ้านี่คือ Rails 4 ทางคือใช้ -> {} นั่นคือแลมบ์ดาใช่ไหม? scope :all_lazy, -> { …

26
ฉันจะหลีกเลี่ยงการเรียกใช้การเรียกกลับ ActiveRecord ได้อย่างไร
ฉันมีบางรุ่นที่มีการโทรกลับหลังบันทึก ปกติแล้วจะใช้ได้ แต่ในบางสถานการณ์เช่นเมื่อสร้างข้อมูลการพัฒนาฉันต้องการบันทึกโมเดลโดยไม่ต้องเรียกใช้การเรียกกลับ มีวิธีง่าย ๆ ในการทำเช่นนั้น? คล้ายกับ ... Person#save( :run_callbacks => false ) หรือ Person#save_without_callbacks ฉันดูเอกสาร Rails แล้วไม่พบอะไรเลย อย่างไรก็ตามจากประสบการณ์ของฉันเอกสาร Rails ไม่ได้บอกเรื่องราวทั้งหมดเสมอไป UPDATE ฉันพบโพสต์บล็อกที่อธิบายถึงวิธีที่คุณสามารถลบการโทรกลับออกจากโมเดลดังนี้: Foo.after_save.clear ฉันไม่พบตำแหน่งที่บันทึกไว้ แต่ดูเหมือนว่าจะใช้งานได้

10
จะเปลี่ยนเขตเวลาเริ่มต้นสำหรับ Active Record ใน Rails ได้อย่างไร?
ในฉันapplication.rbฉันเจอความคิดเห็นต่อไปนี้ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. config.time_zone = 'Eastern Time (US & Canada)' ดังที่คุณเห็นจากด้านบนฉันได้ทำconfig.time_zoneเวลา EST อย่างไรก็ตามยังคงเมื่อสร้างระเบียนในฐานข้อมูลดูเหมือนว่าdatetimeจะถูกจัดเก็บในรูปแบบ UTC ในความคิดเห็นข้างต้นพวกเขาพูดว่า ... และทำให้ Active …

19
วิธีเชื่อมโยงการสืบค้นขอบเขตด้วยหรือแทนที่จะเป็น AND
ฉันใช้ Rails3, ActiveRecord แค่สงสัยว่าฉันจะเชื่อมโยงขอบเขตด้วยคำสั่ง OR แทนที่จะเป็น AND ได้อย่างไร เช่น Person.where(:name => "John").where(:lastname => "Smith") โดยปกติจะส่งคืน: name = 'John' AND lastname = 'Smith' แต่ฉันต้องการ: `name = 'John' OR lastname = 'Smith'

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.