在这种情况下,我无法弄清楚如何解决竞争条件。
我正在使用带有活动记录的 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
有人可以解释如何做到这一点吗?
提前致谢。