我有一系列场地,这些场地有很多OpenTimes来判断场地当前是否在一周的这个时间开放。我想查询当前开放的所有场地。
我目前在venue.rb
中有一个名为'def active'的方法,它通过open_times检查Time.now
是否在open_time的范围内:start和:end fields。
如何创建一个提供所有当前开放场地的查询?
我希望创建一个像Venue.all.currently_available
答案 0 :(得分:2)
试试这个:
# in Venue class
def available?
open_times.where(':now BETWEEN open_times.start AND open_times.end', now: Time.now).exists?
end
UPD:要查询所有打开的场地,请使用:
def self.currently_available
joins(:open_times).
where(':now BETWEEN open_times.start AND open_times.end', now: Time.now).
uniq
end
致电:Venue.currently_available