Question

Dans 2.x Rails vous pouvez utiliser pour vous assurer que les validations vous avez une valeur combinée unique comme ceci:

validates_uniqueness_of :husband, :scope => :wife

Dans la migration correspondante pourrait ressembler à ceci:

add_index :family, [:husband, :wife], :unique => true

veillerait la combinaison mari / femme est unique dans la base de données. Maintenant, dans Rails 3 la syntaxe de validation a changé et l'attribut scope semble être disparu. Il ressemble maintenant à:

validates :husband, :presence => true

Toute idée comment je peux obtenir la validation combinée dans Rails 3? Les Rails 2.x travaillent encore dans des validations Rails 3 donc je peux toujours utiliser le premier exemple, mais il semble si « vieux », y at-il de meilleures façons?

Était-ce utile?

La solution

Ours avec moi. La façon dont la méthode fonctionne Validation ActiveModel est de chercher un validateur.

:presence => true cherche PresenceValidator et passe les options. true au initialiseur du validateur

Je pense que vous voulez

validates :husband, :presence => true, :uniqueness => {:scope => :wife}

(Le validateur unique est en fait une partie de ActiveRecord, pas ActiveModel. Il est vraiment intéressant de voir comment les développeurs configurer cela. Il est tout à fait élégante.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top