【发布时间】:2016-03-14 12:16:51
【问题描述】:
我有一个包含这 3 个模型的 Rails 应用程序 - RentingUnit、Tenant 和 Booking。
租户可以通过填写包含以下字段的新预订表格来预订 RentingUnit -renting_unit_id、tenant_id、start_date、end_date。
start_date 和 end_date 共同构成了renting_unit 的预订期限。
这样,我想确保在与已预订的任何持续时间重叠的持续时间内无法预订renting_unit。 (如果这很重要,我正在使用 PostgreSQL 数据库。)
我遇到了与模型级别验证相关的答案,但我也想在数据库级别强制执行唯一性,以解决可能的竞争条件。
我该如何实施?
【问题讨论】:
-
如果您要存储日期范围,那么我认为您需要一个触发器来强制执行唯一性。
标签: ruby-on-rails postgresql indexing