Ruby on Rails日期重叠



我的应用程序中有一个日期重叠的大问题。我有一辆汽车模型which: 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' 

在我的控制器中,我根据参数过滤汽车:

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

此代码基于(确定是否两个日期范围重叠)
但是这个代码不能正常工作。
在我的数据库中,我有一辆车,并预订了这辆车。预订时间为5月14日至5月20日。
现在,当我搜索并在表单中设置handover_date为5月10日并将return_date设置为5月16日时,它显示Car已准备好创建预订,但这是false,因为Car已经预订了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])

感谢大家的帮助。

相关内容

  • 没有找到相关文章

最新更新