ruby-on-rails - Ruby on Rails 日期重叠

标签 ruby-on-rails ruby datetime ruby-on-rails-4

我的应用程序中存在日期重叠的大问题。我有一辆模型车其中:has_many :reservations 和模型预订:

belongs_to :car

我正在构建搜索表单,该表单将帮助查找在指定日期范围内没有预订的汽车。我的搜索表单如下所示:

= horizontal_simple_form_for :cars, {url: cars_path, method: :get} do |f|
  = f.input :handover_date, as: :string, label: false
  = f.input :return_date, as: :string, label: false
  = f.submit class: 'btn btn-success' 

在我的 Controller 中,我根据参数过滤汽车:

@cars = Car.joins(:reservations).where.not("reservations.reception_time <= ? AND reservations.return_time >= ?", params[:cars][:handover_date], params[:cars][:return_date])

此代码基于 ( Determine Whether Two Date Ranges Overlap )
但这段代码无法正常工作。
在我的数据库中,我有一辆车和这辆车的一次预订。此预订时间为5月14日至5月20日。
现在,当我搜索并在表单中将 handover_date 设置为 5 月 10 日并将 return_date 设置为 5 月 16 日时,它显示汽车已准备好创建预订,但这是错误的,因为汽车已经在 5 月 14 日至 5 月 20 日进行预订...
我不知道如何解决这个问题。
预先感谢大家。

最佳答案

我非常接近解决方案。我必须使用这个:

@cars = Car.joins(:reservations).where.not("reservations.reception_time <= ? AND reservations.return_time >= ?", params[:cars][:return_date], params[:cars][:handover_date])

而不是这个:

@cars = Car.joins(:reservations).where.not("reservations.reception_time <= ? AND reservations.return_time >= ?", params[:cars][:handover_date], params[:cars][:return_date])

感谢大家的帮助。

关于ruby-on-rails - Ruby on Rails 日期重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23664409/

相关文章:

ruby - 使用 apache tomcat 部署 JRuby 应用程序时出错

ios - 如何使用 ruby​​ 读取 .xcconfig 文件常量以将它们用作 FaSTLane channel 变量?

c# - 在 .net 中的特定时间做某事

sql-server-2008 - 如何获得时间 (hh :mm:ss) from sql query?

ruby-on-rails - 在 Ruby on Rails 中隐藏字段

ruby-on-rails - 如何升级到候选发布版本?

ruby-on-rails - 如何在 HABTM Rails Association 中创建记录 How make this?

Ruby 基本对象方法

ruby-on-rails - 在 Rails 3 Refinery CMS 应用程序中设置 s3 时遇到问题

mysql - Django 按年、月、日、时、分过滤日期时间