我的模型Goal
具有这三个属性:goal_type
、goal_length
和is_complete
。
Goal
belongs_to :user
.
goal_type
只能是“X”、“Y”或“Z”
goal_length
只能是“短”、“中”或“长”
is_complete
可以是真或假
我希望只有一个Goal
(validates_uniqueness_of
)具有指定的goal_length
,并且goal_type
在查看都属于同一用户并且将 is_complete 设置为 false 的目标时
简单的英文例子:
如果用户有一个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 ,我将如何添加对忽略验证的条件的检查?