Моя модель, Goal
, имеет следующие три атрибута: goal_type
, goal_length
и is_complete
.
Goal
belongs_to :user
.Сложность использования validates_uniqueness_of с определенным условием
goal_type
может быть только "X", "Y" или "Z"
goal_length
может быть только "короткие", "середина", или "длинные"
is_complete
может быть истинным или ложным
Я хочу, чтобы только когда-либо один Goal
(validates_uniqueness_of
) с указанным goal_length
и goal_type
при взгляде на тысячелетия, что оба принадлежат одному и тому же пользователю и is_complete набор к ложному
Простые английские примеры:
Если пользователь имеет short
X
цели, которую они еще не завершены, они не могут создать новую short
X
цели. Если у пользователя short
X
гол, который у них есть, то они могут создать новый short
X
гол.
Эта проверка работает, но не проверяет, установлены ли для существующих целей свой атрибут is_complete
равным true. Если is_complete
истинен на ранее существовавшие моделях, это нормально, чтобы создать новую цель с теми же атрибутами:
validates_uniqueness_of :goal_type, scope: [:goal_length, :user_id]
Как добавить проверку на состояние, при котором игнорируется проверка, если соответствие предыдущей цели has_complete установлено в true?