[Ror-es] Error en read_attribute

Daniel Rodriguez Troitiño notzcoolx at yahoo.es
Thu Sep 6 09:38:15 GMT 2007


On 9/6/07, Jose Francisco Gonzalez <josefgon at gmail.com> wrote:
> Me he bajado este codigo de internet para que me devuelva la edad
> segun la fecha de nacimiento
>
>   def self.age
>     years = Date.today.year - read_attribute(:birthdate).year
>     if Date.today.month < read_attribute(:birthdate).month ||
>        (Date.today.month == read_attribute(:birthdate).month &&
> read_attribute(:birthdate).day >= Date.today.day)
>       years = years - 1
>     end
>     return years
>   end
>
> Lo he puesto en el modelo pero al ejecutarlo desde la vista me da el error
>
> undefined method `read_attribute' for User:Class
>
> Lo curioso es que dentro de ese mismo modelo tengo este otro que si
> funciona bien pero con write_attribute
>
>   def fill_data_create
>     write_attribute "password", self.class.sha1(password)
>   end
>
> ¿A que puede ser debido?

El método no debería ser de clase, si no de instancia, es decir,
deberías eliminar "self." de la definición. Creo que con eso
funcionaría.

> Otra cosa, ¿existe algo en MySQL para calcular directamente la edad
> desde un campo con la fecha de nacimiento?
>

No lo se, pero las bases de datos están para almacenar datos, Ruby
sirve muy bien para calcular esos datos. Cada uno con su tarea.


More information about the Ror-es mailing list