un ejemplo de lo que estoy hablando:reemplazar los métodos de atributos ActiveRecord
class Person < ActiveRecord::Base
def name=(name)
super(name.capitalize)
end
def name
super().downcase # not sure why you'd do this; this is just an example
end
end
Esto parece funcionar, pero se acaba de leer la sección sobre sustitución métodos de atributos en el ActiveRecord::Base docs, y se sugiere el uso de la read_attribute
y write_attribute
métodos. Pensé que debe haber algo mal con lo que estoy haciendo en el ejemplo anterior; de lo contrario, ¿por qué bendecirían estos métodos como la "forma correcta" de anular los métodos de los atributos? También están forzando un modismo mucho más feo, por lo que debe haber una buena razón ...
Mi pregunta real: ¿Hay algún problema con este ejemplo?
Exactamente lo que necesitaba. Gracias Aaron. – bong
Esto ya no es cierto. O súper o esto funciona ahora. Sin embargo, no he probado la notación hash. – tehgeekmeister
En rails 3, el método de lector especificado aquí por Aaron funciona, pero el escritor que especificó el póster original (que introduce el nombre en súper) funciona bien, y en mi humilde opinión es más limpio que escribir manualmente el atributo como sugiere Aaron. – Batkins