このシナリオで競合状態を解決する方法がわかりません。
アクティブなレコードで 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 人の人に 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
誰かがこれを達成する方法を説明できますか?
前もって感謝します。