mysql - 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)
解决方案
推荐阅读
- java - 将 json 字符串映射到枚举
- python - 使用scrapy抓取时出错
- c - 从 char 数组中删除第一个单词并使用 C 中的指针将其打印出来
- ssl - 为什么我需要 SSL 证书?
- jquery - jQuery clone().html() 在 xhtml 元素上添加单独的结束标记
- performance - 为什么我的 Julia 代码运行速度比 javascript 慢?
- corda - 在 Corda 中,如何查看未完成流中的待处理事务?
- php - 在php中检查一年中的季节
- python - Keras NN 回归模型提供低损失和 0 准确度
- ruby-on-rails - Ruby on Rails - 我无法发送表单 - 400 错误请求