Select 基于日期范围的对象

Select object based on date range

技术规格:ruby 2.1.5p273,Rails 4.2.3.

我有一组天数,我想遍历这些天数以选择日期范围内的正确退出(模型)。

我认为这样的方法可行:

@days.each do |day|
  @exits.where(:start_date..:end_date).include?(day)
end

但是我得到一个错误:

TypeError: Cannot visit Range

通过将对象与单个日期进行比较来查询具有日期范围(在两个字段之间)的对象的最佳方法是什么?谢谢!

Exit.where(day: @exit.start_date..@exits.end_date)

or 

Exit.where('day >= ? AND day <= ?', @exit.start_date, @exits.end_date)

在循环中执行 SQL 查询可能不是一个好主意,它可以重构为最有可能的一次调用。这应该发生在控制器而不是视图中。

您可以使用以下内容:

@days.each do |day|
  exits = Exit.where('? BETWEEN start_date AND end_date', day)
  # etc.
end

如果你不想遍历它们,那么你可以这样做:

Event.where("start_date IN (:days) AND end_date IN (:days)", { days: @days })

Event.where(start_date: @days, end_date: @days)