我的模型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 ,我将如何添加对忽略验证的条件的检查?