我正在rails模型中设置一个作用域,供activeadmin使用。我想建立的范围应该找到过去每个有Job
的survey_date
,有Job.survey
的,没有Job.quotes
的。
以下是MyJob
模型的缩写版本:
has_many :quotes
has_many :surveys
scope :awaiting_quote, lambda { joins(:surveys, :quotes).where('survey_date < :current_time AND surveys.id IS NOT NULL AND quotes.id IS NULL', { current_time: Time.current }) }
我应该如何更改范围以便它正确地找到相关的
Job
记录? 最佳答案
Rails 5引入了可以使用的left_outer_joins
方法
scope :awaiting_quote, -> { joins(:surveys).left_outer_joins(:quotes).where('yada yada') }