2012-12-15 41 views
5

我有以下型號如何使用belongs_to對象編寫作用域?

模型

Job 
    belongs_to :company 
Company 
    has_many :jobs 

現在我選擇所有已使用以下方法的接受CompanyJobs

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得到一個錯誤:協會命名爲 '公司'沒找到;也許你拼錯了嗎? from /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'關係,但面對它'belongs_to'你應該做的是有連接(:公司)而不是連接(:公司)。我編輯了答案來反映這一點 – shadysayed

相關問題