2012-12-15 38 views
5

Tôi đã các mô hình sauCách viết phạm vi với đối tượng thuộc đối tượng?

Models

Job 
    belongs_to :company 
Company 
    has_many :jobs 

Ngay bây giờ tôi chọn tất cả các Jobs đã một chấp nhận Company bằng cách sử dụng phương pháp sau đây:

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

Nhưng tôi muốn sử dụng phạm vi cho điều đó và sử dụng nó với các phạm vi khác. Điều này có thể viết phạm vi đó trong mô hình Job không?

Trả lời

14

tôi sẽ làm một cái gì đó như thế này (từ http://guides.rubyonrails.org/active_record_querying.html)

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

tôi nhận được một lỗi sử dụng phạm vi này '' '>> Job.accepted_with_active_company.inspect ActiveRecord :: ConfigurationError: Hiệp hội có tên là 'công ty' không tìm thấy; có lẽ bạn đã viết sai chính tả nó? từ /Users/rege/.rvm/gems/[email protected]/gems/activerecord-3.2.8/lib/active_record/associations/join_dependency.rb:112:in 'build ' ' '' – tomekfranek

+0

Thông báo lỗi cho bạn biết rằng bạn không có liên kết có tên: công ty. Mã ban đầu giả định nó là một mối quan hệ 'has_many' nhưng đối mặt với nó là' thuộc_to' những gì bạn nên làm là có join (: company) thay vì join (: các công ty). Tôi đã chỉnh sửa câu trả lời để phản ánh điều đó – shadysayed

Các vấn đề liên quan