A avoir deux modèles, "shop" et "product", liés via has_many: through.Rails 3: Validation de l'unicité pour les champs imbriqués_pour
Dans le formulaire d'atelier, il y a des attributs imbriqués pour plusieurs produits, et j'ai quelques problèmes avec la validation de l'unicité du produit. Si je saisis un produit, l'enregistre, puis essaie d'entrer le même nom pour un nouveau produit, la validation de l'unicité se déclenche avec succès.
Cependant, si j'entre le même nom de produit dans 2 lignes du même formulaire imbriqué, le formulaire est accepté - la validation de l'unicité ne se déclenche pas.
Je suppose que c'est un problème assez courant, mais je ne trouve pas de solution simple. Quelqu'un a-t-il des suggestions sur la façon la plus simple de s'assurer que les validations de l'unicité sont respectées dans le même formulaire imbriqué?
Edit: Modèle de produit inclus ci-dessous
class Product < ActiveRecord::Base
has_many :shop_products
has_many :shops, :through => :shop_products
validates_presence_of :name
validates_uniqueness_of :name
end
Vous pouvez toujours ((http://railswarts.blogspot.com/2007/11/validatesuniquenessof-is- broken-and.html)) back la validation de l'unicité avec un index unique dans votre DB. Cela arrêterait les doublons comme vous le voyez, mais ça ne le ferait pas bien - il lancerait simplement une exception lors de la sauvegarde ... Peut-être pourriez-vous écrire une fonction de validation personnalisée pour prendre soin de cela? –
À quoi ressemble votre «produit»? –
Jeffrey: Modèle de produit ajouté ci-dessus – PlankTon