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

Active Record เป็นรูปแบบที่รวมลอจิกโดเมนกับสตอเรจที่เป็นนามธรรมในออบเจ็กต์เดียว ใช้แท็กนี้สำหรับคำถามเกี่ยวกับรูปแบบ [rail-activerecord] สำหรับคำถามเกี่ยวกับเฟรมเวิร์ก Rails ORM

4
คุณสามารถทำได้มากกว่าการเปรียบเทียบวันที่ในการค้นหา Rails 3 หรือไม่?
ฉันมีการค้นหานี้ใน Rails 3: Note.where(:user_id => current_user.id, :notetype => p[:note_type], :date => p[:date]).order('date ASC, created_at ASC') แต่ผมจำเป็นต้องมีเงื่อนไขที่จะเทียบเท่าการ:date => p[:date] :date > p[:date]ฉันจะทำเช่นนี้ได้อย่างไร? ขอบคุณที่อ่าน.

6
การระบุชื่อคอลัมน์ในการย้าย "การอ้างอิง"
ฉันต้องการสร้างmigrationใน Rails โดยอ้างอิงตารางอื่น โดยปกติฉันจะทำบางสิ่งเช่น: add_column :post, :user, :references สิ่งนี้สร้างคอลัมน์ที่ตั้งชื่อuser_idในpostsตาราง แต่สิ่งที่ถ้าแทนuser_idฉันต้องการสิ่งที่ชอบauthor_id? ฉันจะทำเช่นนั้นได้อย่างไร?

3
เมื่อใดควรใช้ความสัมพันธ์“ has_many: through” ใน Rails?
ฉันพยายามทำความเข้าใจว่าอะไรhas_many :throughคืออะไรและจะใช้เมื่อใด (และอย่างไร) อย่างไรก็ตามฉันไม่เข้าใจ ฉันกำลังอ่าน Beginning Rails 3 และพยายามใช้ Googling แต่ฉันไม่เข้าใจ

3
ActiveRecord, has_many: through และ Polymorphic Association
folks, ต้องการให้แน่ใจว่าฉันเข้าใจสิ่งนี้ถูกต้อง และโปรดเพิกเฉยต่อกรณีการสืบทอดที่นี่ (SentientBeing) โดยพยายามมุ่งเน้นไปที่โมเดลหลายรูปแบบใน has_many: ผ่านความสัมพันธ์ ที่กล่าวมาให้พิจารณาดังต่อไปนี้ ... class Widget < ActiveRecord::Base has_many :widget_groupings has_many :people, :through => :widget_groupings, :source => :person, :conditions => "widget_groupings.grouper_type = 'Person'" has_many :aliens, :through => :widget_groupings, :source => :alien, :conditions => "video_groupings.grouper_type = 'Alien'" end class Person < ActiveRecord::Base has_many :widget_groupings, :as => …

11
ฉันจะดู SQL ที่จะสร้างโดยแบบสอบถาม ActiveRecord ใน Ruby on Rails ได้อย่างไร
ฉันต้องการดูคำสั่ง SQL ที่แบบสอบถาม ActiveRecord จะสร้างขึ้น ฉันรู้ว่าฉันสามารถรับข้อมูลนี้ได้จากบันทึกหลังจากออกแบบสอบถามแล้ว แต่ฉันสงสัยว่ามีวิธีที่สามารถเรียกใช้และแบบสอบถาม ActiveRecord ได้หรือไม่ ตัวอย่างเช่น: SampleModel.find(:all, :select => "DISTINCT(*)", :conditions => ["`date` > #{self.date}"], :limit => 1, :order => '`date`', :group => "`date`") ฉันต้องการเปิดคอนโซล irb และใช้เมธอดในตอนท้ายที่จะแสดง SQL ที่แบบสอบถามนี้จะสร้างขึ้น แต่ไม่จำเป็นต้องดำเนินการค้นหา

6
จะแสดงการสืบค้น SQL ใน Rails console ได้อย่างไร?
เมื่อฉันเรียกใช้แบบสอบถาม (เช่นMyModel.where(...)หรือrecord.associated_things) ในคอนโซลฉันจะเห็นการสืบค้นฐานข้อมูลจริงได้อย่างไรเพื่อให้ฉันเข้าใจมากขึ้นว่าเกิดอะไรขึ้น

3
จะทำแบบสอบถาม LIKE ใน Arel และ Rails ได้อย่างไร?
ฉันต้องการทำสิ่งที่ชอบ: SELECT * FROM USER WHERE NAME LIKE '%Smith%'; ความพยายามของฉันใน Arel: # params[:query] = 'Smith' User.where("name like '%?%'", params[:query]).to_sql อย่างไรก็ตามสิ่งนี้จะกลายเป็น: SELECT * FROM USER WHERE NAME LIKE '%'Smith'%'; Arel ตัดสตริงข้อความค้นหา "Smith" อย่างถูกต้อง แต่เนื่องจากนี่เป็นคำสั่ง LIKE จึงไม่สามารถใช้งานได้ คำถาม LIKE ใน Arel ทำอย่างไร PS Bonus - จริงๆแล้วฉันกำลังพยายามสแกนสองฟิลด์บนตารางทั้งชื่อและคำอธิบายเพื่อดูว่าตรงกับข้อความค้นหาหรือไม่ วิธีการที่จะทำงาน?

3
วิธีการแปลงผลลัพธ์ ActiveRecord เป็นอาร์เรย์ของแฮช
ฉันมีผลลัพธ์ ActiveRecord ของการดำเนินการค้นหา: tasks_records = TaskStoreStatus.find( :all, :select => "task_id, store_name, store_region", :conditions => ["task_status = ? and store_id = ?", "f", store_id] ) ตอนนี้ฉันต้องการแปลงผลลัพธ์นี้เป็นอาร์เรย์ของแฮชดังนี้: [0] -> { :task_d => 10, :store_name=> "Koramanagala", :store_region=> "India" } [1] -> { :task_d => 10, :store_name=> "Koramanagala", :store_region=> "India" } [2] -> { …

8
ActiveRecord: แสดงรายการคอลัมน์ในตารางจากคอนโซล
ฉันรู้ว่าคุณสามารถขอให้ ActiveRecord แสดงรายการตารางในคอนโซลโดยใช้: ActiveRecord::Base.connection.tables มีคำสั่งที่จะแสดงรายการคอลัมน์ในตารางที่กำหนดหรือไม่


4
Rails - ตรวจสอบการมีอยู่ของสมาคม?
ฉันมีโมเดล A ที่มีการเชื่อมโยง "has_many" กับโมเดลอื่น B ​​ฉันมีข้อกำหนดทางธุรกิจที่การแทรกใน A ต้องมีอย่างน้อย 1 เร็กคอร์ดที่เกี่ยวข้องกับ B มีวิธีใดบ้างที่ฉันสามารถเรียกเพื่อให้แน่ใจว่านี่เป็นความจริง หรือฉันต้องเขียนการตรวจสอบความถูกต้องเอง?

4
ความหลากหลายของการโหลดที่กระตือรือร้น
ใช้ Rails 3.2 โค้ดนี้ผิดอะไร? @reviews = @user.reviews.includes(:user, :reviewable) .where('reviewable_type = ? AND reviewable.shop_type = ?', 'Shop', 'cafe') มันทำให้เกิดข้อผิดพลาดนี้: ไม่สามารถโหลดการเชื่อมโยงโพลีมอร์ฟิคได้อย่างกระตือรือร้น: ตรวจสอบได้ ถ้าฉันลบreviewable.shop_type = ?เงื่อนไขมันก็ใช้ได้ ฉันจะกรองตามreviewable_typeและreviewable.shop_type(ซึ่งจริงๆแล้วshop.shop_type) ได้อย่างไร

5
การแปลงอาร์เรย์ของวัตถุเป็น ActiveRecord :: Relation
ฉันมีอาร์เรย์ของวัตถุเรียกมันว่าไฟล์Indicator. ฉันต้องการเรียกใช้เมธอดคลาส Indicator (พวกdef self.subjectsความหลากหลายขอบเขต ฯลฯ ) บนอาร์เรย์นี้ วิธีเดียวที่ฉันรู้ในการเรียกใช้เมธอดคลาสกับกลุ่มของอ็อบเจ็กต์คือการกำหนดให้เป็น ActiveRecord :: Relation ดังนั้นผมจึงจบลงด้วยการหันไปเพิ่มวิธีการในการto_indicatorsArray def to_indicators # TODO: Make this less terrible. Indicator.where id: self.pluck(:id) end ในบางครั้งฉันเชื่อมโยงขอบเขตเหล่านี้ไว้เล็กน้อยเพื่อกรองผลลัพธ์ลงในวิธีการคลาส แม้ว่าฉันจะเรียกเมธอดบน ActiveRecord :: Relation แต่ฉันก็ไม่รู้วิธีเข้าถึงวัตถุนั้น ฉันสามารถเข้าถึงเนื้อหาของมันได้allเท่านั้น แต่allเป็น Array. ดังนั้นฉันต้องแปลงอาร์เรย์นั้นเป็น ActiveRecord :: Relation ตัวอย่างเช่นนี่เป็นส่วนหนึ่งของหนึ่งในวิธีการ: all.to_indicators.applicable_for_bank(id).each do |indicator| total += indicator.residual_risk_for(id) indicator_count += 1 if indicator.completed_by?(id) …


6
การใช้ตัวช่วยในโมเดล: ฉันจะรวมการพึ่งพาตัวช่วยได้อย่างไร
ฉันกำลังเขียนแบบจำลองที่จัดการการป้อนข้อมูลของผู้ใช้จากพื้นที่ข้อความ ทำตามคำแนะนำจากhttp://blog.caboo.se/articles/2008/8/25/sanitize-your-users-html-inputฉันกำลังล้างอินพุตในโมเดลก่อนบันทึกลงในฐานข้อมูลโดยใช้ before_validate โทรกลับ. ส่วนที่เกี่ยวข้องของแบบจำลองของฉันมีลักษณะดังนี้: include ActionView::Helpers::SanitizeHelper class Post < ActiveRecord::Base { before_validation :clean_input ... protected def clean_input self.input = sanitize(self.input, :tags => %w(b i u)) end end ไม่จำเป็นต้องพูดมันไม่ได้ผล ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามบันทึกโพสต์ใหม่ undefined method `white_list_sanitizer' for #<Class:0xdeadbeef> เห็นได้ชัดว่า SanitizeHelper สร้างอินสแตนซ์ของ HTML :: WhiteListSanitizer แต่เมื่อฉันผสมลงในโมเดลของฉันมันไม่พบ HTML :: WhiteListSanitizer ทำไม? ฉันจะทำอย่างไรเพื่อแก้ไขปัญหานี้

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