40 votes

Rails 3: Valider les valeurs combinées

Dans Les 2 Rails.x vous pouvez utiliser des validations assurez-vous que vous avez une combinaison unique de valeur comme ceci:

validates_uniqueness_of :husband, :scope => :wife

Dans la migration, il pourrait ressembler à ceci:

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

Veiller à ce que le mari/la femme combinaison est unique dans la base de données. Maintenant, dans Rails 3 de la validation de la syntaxe a changé et la portée de l'attribut semble avoir disparu. Il ressemble maintenant à:

validates :husband, :presence => true

Une idée de comment je peux obtenir le combiné de validation dans Rails 3? Les Rails 2.x validations travaillent encore dans Rails 3, donc je peux encore utiliser le premier exemple, mais ça a l'air tellement "vieux", il y a de meilleures façons?

57voto

epochwolf Points 6329

Ours avec moi. La méthode validates dans ActiveModel fonctionne pour rechercher un validateur.

:presence => true recherche PresenceValidator et transmet les options: true à l'initialiseur du validateur.

Je pense que tu veux

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

(Le validateur d'unicité fait en réalité partie d'ActiveRecord, et non d'ActiveModel. C'est vraiment intéressant de voir comment les développeurs l'ont mis en place. C'est assez élégant.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X