私のモデル には、、Goal
、 の 3 つの属性があります。.goal_type
goal_length
is_complete
Goal
belongs_to :user
goal_type
"X"、"Y"、または "Z" のみを指定できます
goal_length
"short"、"mid"、または "long" のみを指定できます
is_complete
true または false
同じユーザーに属し、is_complete が false に設定されている目標を見ると、指定されたGoal
( )が 1 つだけになるようにしたいvalidates_uniqueness_of
goal_length
goal_type
平易な英語の例:
ユーザーがshort
X
まだ完了していない目標を持っている場合、新しいshort
X
目標を作成することはできません。ユーザーが完了した目標を持っている場合、ユーザーはshort
X
新しいshort
X
目標を作成できます。
is_complete
この検証は機能しますが、既存の目標の属性が true に設定されているかどうかはチェックされません。is_complete
以前の既存のモデルで true の場合、同じ属性を持つ新しい目標を作成しても問題ありません。
validates_uniqueness_of :goal_type, scope: [:goal_length, :user_id]
一致する前の目標で is_complete が true に設定されている場合、検証が無視される条件のチェックを追加するにはどうすればよいですか?