2012-12-15 14 views
5

मैं निम्नलिखित मॉडलsubs_to ऑब्जेक्ट के साथ स्कोप कैसे लिखें?

मॉडल

Job 
    belongs_to :company 
Company 
    has_many :jobs 

अभी मैं सभी का चयन करें Jobs जो एक स्वीकार कर लिया है Company निम्नलिखित विधि का उपयोग किया है:

def self.with_accepted_company 
    Job.all.reject {|job| job.company.state != "accepted" } 
end 

लेकिन मैं करना चाहते हैं इसके लिए दायरा का उपयोग करें और इसे अन्य क्षेत्रों के साथ उपयोग करें। क्या Job मॉडल में उस दायरे को लिखना संभव है?

उत्तर

14

मैं कुछ इस तरह (http://guides.rubyonrails.org/active_record_querying.html से)

class Job 
    scope :accepted_with_active_company, ->() { 
    joins(:company).where('companies.state' => "accepted") 
    } 
end 
+0

करना होगा मैं इस दायरे '' '>> Job.accepted_with_active_company.inspect ActiveRecord :: ConfigurationError का उपयोग कर कोई त्रुटि मिलती है: एसोसिएशन नाम 'कंपनियों के नहीं मिला; शायद आपने इसे गलत वर्तनी दी है? /Users/rege/.rvm/gems/[email protected]/gems/activerecord-3.2.8/lib/active_record/associations/join_dependency.rb:112:in 'build' '' ' – tomekfranek

+0

त्रुटि संदेश आपको बताता है कि आपके पास नाम नहीं है: कंपनियों। मूल कोड मानता है कि यह 'has_many' संबंध था लेकिन चेहरे में यह' belong_to' है जो आपको करना चाहिए (जुड़ने) की बजाय (कंपनी) में शामिल होना है (: कंपनी)। मैंने इसे प्रतिबिंबित करने के लिए उत्तर संपादित किया है – shadysayed

संबंधित मुद्दे