如何使用belongs_to对象编写范围?

时间:2012-12-15 15:21:05

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord scopes

我有以下型号

模型

Job
  belongs_to :company
Company
  has_many :jobs

现在,我使用以下方法选择所有已接受Jobs的{​​{1}}:

Company

但是我想使用范围并将其与其他范围一起使用。是否可以在def self.with_accepted_company Job.all.reject {|job| job.company.state != "accepted" } end 模型中编写该范围?

2 个答案:

答案 0 :(得分:19)

我会这样做(来自http://guides.rubyonrails.org/active_record_querying.html

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

答案 1 :(得分:0)

这是where子句的另一种语法:

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