【发布时间】:2016-10-25 03:03:49
【问题描述】:
我有一个包含许多日期字段的 VoyageLeg 模型。我有一个实例方法如下,可以根据是否已填充日期来获取其中一个日期:
def calc_arrival_date
if ada
ada #return actual date of arrival
elsif updated_eda
updated_eda #return updated estimated date of arrival
else
eda #return estimated date of arrival
end
end
我还有一个拥有_many voyage_legs 的Voyage 模型。我将如何在 Voyage 模型上创建一个将引用 calc_arrival_date 的范围,或者对在范围中查询哪个日期执行相同的逻辑?
即我希望能够在 Voyage 上有一个范围,可以执行以下操作:
scope :archived, -> { joins(:voyage_legs).where("voyage_legs.calc_arrival_date < ?", Time.zone.now) }
【问题讨论】:
-
您的意思是将日期作为范围内的参数传递?
-
不,我不这么认为。我想查询字段
ada如果不是nil,否则updated_ada如果不是nil,否则eda然后如果是过去。
标签: ruby-on-rails activerecord active-record-query