我正在rails模型中设置一个作用域,供activeadmin使用。我想建立的范围应该找到过去每个有Jobsurvey_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') }

07-24 09:46
查看更多