2012-12-15 22 views
5

Aşağıdaki modellerbelongs_to nesnesiyle kapsam nasıl yazılır?

Modelleri

Job 
    belongs_to :company 
Company 
    has_many :jobs 

Şu anda seçmek bütün bir aşağıdaki yöntemi kullanarak Company kabul etmiş Jobs adres:

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

Ama istiyorum Bunun için kapsam kullanın ve diğer kapsamları ile kullanın. Bu kapsamı Job modelinde yazmak mümkün mü? Dernek adında 'şirketleri':

cevap

14

ben `` `>> Job.accepted_with_active_company.inspect ActiveRecord :: ConfigurationError bu kapsam kullanıldığında bir hata alıyorum (http://guides.rubyonrails.org/active_record_querying.html itibaren) böyle bir şey

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

yapacağını bulunamadı; belki de yanlış yazdın mı? /Users/rege/.rvm/gems/[email protected]/gems/activerecord-3.2.8/lib/active_record/associations/join_dependency.rb:112:in 'build ' ' '' – tomekfranek

+0

Hata iletisinde, şirket adında bir ilişkiniz olmadığını belirtiyor. Orijinal kod, bunun bir "has_many" ilişkisi olduğunu varsayar, ancak yüzünde 'belongs_to' olması gereken, katılımcılar (: şirketler) yerine katılmalıdır (şirket). Ben bunu cevaplamak için cevabı düzenledim – shadysayed