Rails 3: Valider les valeurs combinées

Dans Rails 2.x, vous pouvez utiliser des validations pour vous assurer que votre valeur combinée est unique:

validates_uniqueness_of :husband, :scope => :wife 

Dans la migration correspondante, cela pourrait ressembler à ceci:

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

Cela garantirait que la combinaison mari / femme est unique dans la firebase database. Maintenant, dans Rails 3, la syntaxe de validation a changé et l’atsortingbut de scope semble avoir disparu. Il ressemble maintenant à:

 validates :husband, :presence => true 

Une idée de comment réaliser la validation combinée dans Rails 3? Les validations Rails 2.x fonctionnent toujours dans Rails 3, donc je peux toujours utiliser le premier exemple, mais il semble si “ancien”, existe-t-il de meilleurs moyens?

Ours avec moi Le mode de validation de la méthode ActiveModel consiste à 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, pas d’ActiveModel. C’est vraiment intéressant de voir comment les développeurs le mettent en place. C’est assez élégant.)