我有以下型号
楷模
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
模型中编写该范围?
我有以下型号
楷模
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
模型中编写该范围?
我会做这样的事情(来自http://guides.rubyonrails.org/active_record_querying.html)
class Job
scope :accepted_with_active_company, ->() {
joins(:company).where('companies.state' => "accepted")
}
end
这是 where 子句的另一种语法:
class Job
scope :accepted_with_active_company, ->() {
joins(:company).where(companies: { state: 'accepted' })
}
end