首页 > 解决方案 > Rails 使用日期范围和时间范围验证唯一性

问题描述

我有一个涉及创建财产促销的应用程序。我的数据库表中有以下属性:-

 create_table :property_promotions do |t|

  t.string :title
  t.date :start_date
  t.date :end_date
  t.time :start_time
  t.time :end_time

  t.timestamps null: false
end

现在我想创建具有日期和时间的唯一 property_promotions。不知道如何验证每个 property_promotions 在日期和时间方面都没有重叠。

尝试了以下查询,但未能创建具有日期和时间的唯一记录。

PropertyPromotion.where("(DATEDIFF(start_date, ?) * DATEDIFF(?, end_date)) >= 0 AND (TIMEDIFF(start_time, ?) * TIMEDIFF(?, end_time)) > 0", end_date, start_date, end_time, start_time)

标签: mysqlruby-on-rails

解决方案


推荐阅读