ruby-on-rails - formularios - recursos anidados rails
Rails 3: Validar valores combinados (1)
Tengan paciencia conmigo. La forma en que funciona el método validates en ActiveModel es buscar un Validator.
:presence => true
busca PresenceValidator
y pasa las opciones: true
al inicializador del validador.
Creo que quieres
validates :husband, :presence => true, :uniqueness => {:scope => :wife}
(El validador de exclusividad es en realidad parte de ActiveRecord, no de ActiveModel. Es realmente interesante cómo los desarrolladores configuraron esto. Es bastante elegante).
En Rails 2.x puede usar validaciones para asegurarse de tener un valor combinado único como este:
validates_uniqueness_of :husband, :scope => :wife
En la migración correspondiente, podría verse así:
add_index :family, [:husband, :wife], :unique => true
Esto aseguraría que la combinación esposo / esposa sea única en la base de datos. Ahora, en Rails 3, la sintaxis de validación cambió y el atributo del alcance parece haber desaparecido. Ahora se ve así:
validates :husband, :presence => true
¿Alguna idea de cómo puedo lograr la validación combinada en Rails 3? Las validaciones de Rails 2.x aún funcionan en Rails 3, así que aún puedo usar el primer ejemplo, pero parece tan "viejo", ¿hay formas mejores?