Pergunta

No Rails 2.x, você pode usar as validações para garantir que tenha um valor combinado exclusivo como este:

validates_uniqueness_of :husband, :scope => :wife

Na migração correspondente, poderia ser assim:

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

Isso garantiria que a combinação de marido/esposa seja única no banco de dados. Agora, nos trilhos 3, a sintaxe da validação alterou e o atributo de escopo parece ter desaparecido. Agora parece:

validates :husband, :presence => true

Alguma idéia de como posso alcançar a validação combinada no Rails 3? As validações do Rails 2.x ainda funcionam no Rails 3, para que eu ainda possa usar o primeiro exemplo, mas parece tão "velho", existem maneiras melhores?

Foi útil?

Solução

Tenha paciencia comigo. A maneira como o método valida no ActiveModel Works é procurar um validador.

:presence => true procura PresenceValidator e passa as opções: true para o inicializador do validador.

Eu acho que você quer

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

(O validador de singularidade faz parte do ActiveRecord, não do ActiveModel. É realmente interessante como os desenvolvedores configuram isso. É bastante elegante.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top