2009/3/31 Nelson Fernandez <[email protected]>:
>
>
> 2009/3/30 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
>>
>> Estoy cegado, debe ser fácil. ¿Alguien?
>>
>
> no se si esto andará pero puede estar cerca...
>
> validates_presence_of :dni, :if => Proc.new {|p| !Persona.find(:select =>
> '1', :conditions => ["(nombre = ?) and (apellido = ?)", p.nombre,
> p.apellido]).blank? }
>

Hrm, debería andar (claro que sigo pensando que lo de Dwayne también
:P) -- por otro lado, a ese código le cambiaría dos cosas. 1) El proc
ese extraerlo a un metodo privado y revertiria la logica (:unless =>
:name_is_unique?), y 2) Usaría self.class en lugar de Persona.

Igual, me gustaría ver qué tests fallan con lo otro, capaz que así es
más fácil darse cuenta qué está mal :)

-f

> :: nelson ::
> artesano de software / software craftsman
> http://netflux.com.ar
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a