recursos rails formularios formulario anidados ruby-on-rails ruby-on-rails-3 validation validates-uniqueness-of database-integrity

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?