Carriles 3: valores Validar combinados
Pregunta
En los carriles 2.x puede utilizar validaciones para asegurarse de que tiene un valor único combinado de esta manera:
validates_uniqueness_of :husband, :scope => :wife
En la migración correspondiente que podría tener este aspecto:
add_index :family, [:husband, :wife], :unique => true
Esto se aseguraría de que la combinación marido / esposa es único en la base de datos. Ahora, en Rails 3 la sintaxis de validación cambió y el atributo scope parece haber desaparecido. Ahora parece que:
validates :husband, :presence => true
Cualquier idea de lo que puedo lograr la validación combinado en Rails 3? Los rieles 2.x validaciones todavía trabajo en Rails 3 por lo que se siguen utilizando el primer ejemplo, pero se ve tan "viejo", hay mejores maneras?
Solución
Oso conmigo. La forma en que el método valida en ActiveModel funciona es la búsqueda de un validador.
miradas :presence => true
para PresenceValidator
y pasa las opciones:. true
a inicializador del validador
Pienso que desea
validates :husband, :presence => true, :uniqueness => {:scope => :wife}
(El validador singularidad es en realidad parte de ActiveRecord, no ActiveModel. Es muy interesante cómo los desarrolladores configurar esto. Es muy elegante.)