【发布时间】:2013-02-21 05:22:13
【问题描述】:
我无法弄清楚如何在这种情况下解决竞争条件。
我正在使用带有活动记录的 rails 3.2.11
我有模型:(只是一个例子)
class Task < ActiveRecord::Base
belongs_to :person
attr_accessible :start_date, :end_date, :person_id
end
class Person < ActiveRecord::Base
has_many :tasks
end
问题是:
我想确保一个人在该时间间隔(start_date 和 end_date)之间只分配 1 个任务
例如,
Task | Person_id | start_date | end_date
0 1 01-01-01 10:00 01-01-01 11:00
1 1 01-01-01 10:15 01-01-01 10:45 ## this should no be valid!!
我知道 Rails 中的验证不会因为竞争条件而阻止这种情况,并且我无法在数据库级别添加索引,因为我不想要 unique => true 而是某种 unique_in_interval => true
有人能解释一下如何做到这一点吗?
提前致谢。
【问题讨论】:
标签: ruby-on-rails date unique conditional-statements race-condition