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

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

3
Rails: ตรวจสอบความเป็นเอกลักษณ์ของสองคอลัมน์ (ร่วมกัน)
ฉันมีReleaseแบบจำลองmediumและcountryคอลัมน์ (อื่น ๆ ) ไม่ควรมีreleasesที่ใช้ร่วมกันmedium/ countryชุดค่าผสมที่เหมือนกัน ฉันจะเขียนสิ่งนี้เป็นการตรวจสอบรางได้อย่างไร

12
ค้นหา vs find_by เทียบกับที่ไหน
ฉันยังใหม่กับราง สิ่งที่ฉันเห็นว่ามีหลายวิธีในการค้นหาบันทึก: find_by_<columnname>(<columnvalue>) find(:first, :conditions => { <columnname> => <columnvalue> } where(<columnname> => <columnvalue>).first และดูเหมือนว่าพวกเขาทั้งหมดจะสร้าง SQL เหมือนกันทุกประการ นอกจากนี้ฉันเชื่อว่าสิ่งเดียวกันนี้เป็นจริงสำหรับการค้นหาหลายระเบียน: find_all_by_<columnname>(<columnvalue>) find(:all, :conditions => { <columnname> => <columnvalue> } where(<columnname> => <columnvalue>) มีกฎง่ายๆหรือคำแนะนำว่าควรใช้ข้อใด?

4
อะไรคือความแตกต่างระหว่างถอนขนและรวบรวมใน Rails?
นี่คือรหัสตัวอย่างสองรหัส คนแรกกับcollect: User.first.gifts.collect(&:id) อันที่สองกับpluck: User.first.gifts.pluck(:id) มีความแตกต่างระหว่างประสิทธิภาพหรืออย่างอื่นหรือไม่?



7
ฉันจะเขียนทับเมธอด getter ในโมเดล ActiveRecord ได้อย่างไร
ฉันพยายามเขียนทับเมธอด getter สำหรับโมเดล ActiveRecord ฉันมีแอตทริบิวต์ที่เรียกว่าnameในโมเดลCategoryและฉันต้องการที่จะทำสิ่งนี้: def name name_trans || name end หากname_transแอตทริบิวต์ไม่ใช่ศูนย์ให้ส่งคืนหรือส่งคืนnameแอตทริบิวต์ ฉันจะทำอย่างไร สิ่งนี้ควรถูกเรียกตามปกติดังนี้: @category.name

2
คำเตือนการเลิกใช้งานเมื่อใช้ has_many: ถึง: uniq ใน Rails 4
Rails 4 ได้แนะนำคำเตือนการเลิกใช้งานเมื่อใช้: uniq => true กับ has_many: through ตัวอย่างเช่น: has_many :donors, :through => :donations, :uniq => true ให้คำเตือนต่อไปนี้: DEPRECATION WARNING: The following options in your Goal.has_many :donors declaration are deprecated: :uniq. Please use a scope block instead. For example, the following: has_many :spam_comments, conditions: { spam: true }, class_name: …

3
ActiveRecord ค้นหาและส่งคืนเฉพาะคอลัมน์ที่เลือก
แก้ไข 2 หากคุณสะดุดในสิ่งนี้ให้ตรวจสอบคำตอบทั้งสองข้อเนื่องจากตอนนี้ฉันใช้ถอนสำหรับสิ่งนี้ ฉันมีชุดข้อมูลที่กำหนดเองขนาดใหญ่พอสมควรซึ่งฉันต้องการกลับมาเป็น echoe'd เป็น json ส่วนหนึ่งคือ: l=Location.find(row.id) tmp[row.id]=l แต่ฉันต้องการทำสิ่งที่ชอบ: l=Location.find(row.id).select("name, website, city") tmp[row.id]=l แต่ดูเหมือนจะไม่ได้ผล ฉันจะทำงานนี้ได้อย่างไร ขอบคุณ แก้ไข 1 หรือมีวิธีที่ฉันสามารถส่งอาร์เรย์เฉพาะแอตทริบิวต์ที่ฉันต้องการรวม?

2
การเปลี่ยนประเภทคอลัมน์เป็นสตริงที่ยาวขึ้นในราง
ในการย้ายข้อมูลครั้งแรกฉันประกาศในคอลัมน์contentเป็นสตริง Activerecord ทำให้เป็นสตริง (255) ตามคำอธิบายประกอบอัญมณี หลังจากที่ฉันดันแอปไปที่ heroku ซึ่งใช้ postgres หากฉันป้อนในแบบฟอร์มในเนื้อหาสตริงที่ยาวกว่า 255 ฉันได้รับข้อผิดพลาด PGError: ERROR: value too long for type character varying(255) ปัญหาคือฉันต้องการให้เนื้อหานั้นมีสตริงที่ยาวมากบางที (ข้อความอิสระอาจเป็นตัวอักษรหลายพันตัว) ตัวแปรใด (สตริงไม่เหมาะสมสำหรับสิ่งนี้) pg จะยอมรับหรือไม่? ฉันจะสร้างการย้ายข้อมูลเพื่อแทนที่ประเภทของคอลัมน์นั้นได้อย่างไร ขอบคุณ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.