Estoy usando Ruby on Rails 3.2.2 y me gustaría saber si la siguiente es una forma "correcta"/"correcta"/"segura" de anular un método setter para un atributo de mi clase.¿Cuál es la manera correcta de anular un método setter en Ruby on Rails?
attr_accessible :attribute_name
def attribute_name=(value)
... # Some custom operation.
self[:attribute_name] = value
end
El código anterior parece funcionar como se esperaba. Sin embargo, Me gustaría saber si, usando el código anterior, en el futuro tendré problemas o, al menos, qué problemas "debería esperar"/"podría pasar" con Ruby on Rails. Si esa no es la manera correcta de anular un método setter, ¿cuál es la forma correcta?
Nota: Si utilizo el código
attr_accessible :attribute_name
def attribute_name=(value)
... # Some custom operation.
self.attribute_name = value
end
me sale el siguiente error:
SystemStackError (stack level too deep):
actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:70
Me encanta la terminología aplicada ' "adecuada"/"correcta"/"seguro"'. Cuando le das 3 formas, realmente garantiza que no haya interpretaciones erróneas. ¡Buen trabajo! – Jay
@Jay - "Fineliness italianisms"; -) – Backo
Para que quede claro, el "nivel de pila demasiado profundo" se refiere al hecho de que es una llamada recursiva ... se llama a sí misma. – Nippysaurus