0

我有一系列场地,这些场地 has_many OpenTimes 来判断场地当前是否在一周的这个时间开放。我想查询所有当前开放的场所。

我目前有一个venue.rb称为“def active”的方法,它通过 open_times 并检查是否Time.now在 open_time 的 :start 和 :end 字段的范围内。

如何创建提供所有当前开放场所的查询?

我希望创建一个类似于Venue.all.currently_available

4

1 回答 1

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

于 2012-05-21T16:08:35.230 回答