【发布时间】:2015-06-23 21:35:01
【问题描述】:
有很多与 Rails 日期范围问题有关的问题,但我的问题稍微复杂一些。
我有两个模型:house 和 booking。 A House has_many 预订。 Booking 有两个日期格式的属性:check_in 和 check_out。
我想要实现的目标:给出一个有效的日期范围,显示该范围内所有可用的房屋。详细:
- 范围的开始日期不应在任何预订中。
- 范围的结束日期不应在任何预订中。
- 开始和结束之间不应有任何预订。
这可以使用 rails 范围来完成吗?
更新:
我发现下面的代码可以检查重叠的范围日期间隔。
named_scope :overlapping, lambda { |interval| {
:conditions => ["id <> ? AND (DATEDIFF(start_date, ?) * DATEDIFF(?, end_date)) >= 0", interval.id, interval.end_date, interval.start_date]
}}
如何将其转移到我的问题上?
【问题讨论】:
-
你应该使用Bookable Gem。
-
@AntarrByrd 感谢您的建议。我已经有了自己的模型,我想保持简单,只做范围。
-
您可以随时查看它是如何完成的there
标签: ruby-on-rails ruby rails-activerecord