2009/3/31 dwayne <[email protected]>
> Estoy con un problemilla que seguro para alguno acá va a ser una gilada:
>
> Tengo el modelo Persona. No quiero exigir el DNI, pero si se repite el
> nombre completo de una persona entonces sí debe especificarse el DNI para
> diferenciar.
> Intenté lo siguiente pero no funciona.
>
> class Persona < ActiveRecord::Base
>
> validates_uniqueness_of :dni, :allow_nil => true, :allow_blank=>true,
> :message=>I18n.t('persona.dni_already_exists')
> validates_uniqueness_of :dni, :scope=>[:nombres, :apellidos], :allow_nil
> => true, :message=>I18n.t('persona.persona_already_exists')
>
> end
Para mi no vale la pena pelearse con las validations cuando hablamos de
uniqueness. Prefiero delegarle el laburo a la DB, seguramente _todas_ las
que maneja rails deben tener index unique (mysql permite nulls en un campo
indexado con unique). Teniendo en cuenta eso podes implementar
MyARClass.create_or_find_by_name(some_name)
#1 y listo, mysql maneja el resto.
p = Persona.create_or_find_by_nombre_apellidos_dni("Pepe", "Pompin",
"1234567")
#1 http://blog.grayproductions.net/articles/five_activerecord_tips
Seguramente lo tendras que adaptar para que ande para lo que queres pero el
concepto es: agregar el indice, esperar que el save reviente, manejar la
excepcion.
>
>
> Estoy cegado, debe ser fácil. ¿Alguien?
>
> ------
> Dwayne Macgowan
> www.dwayne.com.ar
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
--
--------------------------------------------------------------
EmmanuelOga.Wordpress.com
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar