Mon modèle, Goal
, possède les trois attributs suivants: goal_type
, goal_length
et is_complete
.
Goal
belongs_to :user
.J'ai de la difficulté à utiliser validates_uniqueness_of avec une condition spécifique
goal_type
ne peut être "X", "Y" ou "Z"
goal_length
ne peut être "court", "mi" ou "long"
is_complete
peut être vrai ou faux
Je veux qu'il y ait que jamais un Goal
(validates_uniqueness_of
) avec un spécifié goal_length
et goal_type
quand on regarde les objectifs que les deux appartiennent au même utilisateur et ont is_complete défini sur false
exemples: langage simple
Si un utilisateur a un short
X
but qu'ils ont pas encore terminé, ils ne peuvent pas créer un nouvel objectif short
X
. Si un utilisateur de short
X
atteint un but, il peut créer un nouvel objectif short
X
.
Cette validation fonctionne, mais ne vérifie pas si les attributs existants ont l'attribut is_complete
défini sur true. Si is_complete
est vrai sur les modèles précédemment existants, il est autorisé à créer un nouvel objectif avec les mêmes attributs:
validates_uniqueness_of :goal_type, scope: [:goal_length, :user_id]
Comment puis-je ajouter un chèque de la condition où la validation est ignorée si l'objectif précédent correspondant is_complete est-il défini sur true?