我有一系列场地,这些场地 has_many OpenTimes 来判断场地当前是否在一周的这个时间开放。我想查询所有当前开放的场所。
我目前有一个venue.rb
称为“def active”的方法,它通过 open_times 并检查是否Time.now
在 open_time 的 :start 和 :end 字段的范围内。
如何创建提供所有当前开放场所的查询?
我希望创建一个类似于Venue.all.currently_available
我有一系列场地,这些场地 has_many OpenTimes 来判断场地当前是否在一周的这个时间开放。我想查询所有当前开放的场所。
我目前有一个venue.rb
称为“def active”的方法,它通过 open_times 并检查是否Time.now
在 open_time 的 :start 和 :end 字段的范围内。
如何创建提供所有当前开放场所的查询?
我希望创建一个类似于Venue.all.currently_available
尝试这个:
# 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