relaciones rails modelos ruby-on-rails ruby model

ruby on rails - modelos - ¿Cómo proteger un atributo de modelo Rails?



orm de rails (2)

Mi modelo de factura tiene un atributo address_id, y no quiero que esta address_id cambie FOREVER. Entonces no quiero que esto suceda fuera de la clase:

invoice.address_id = 1 invoice.address = some_address

Rails agrega automáticamente este atributo address_id al modelo de la tabla de facturas, entonces, ¿cómo puedo declarar este atributo como privado / protegido? Vocación

attr_protected :address_id

lo más probable es que no sea la solución ya que, según la documentación, solo evita las asignaciones masivas.

¡Gracias!


No es tan bonito como un trazador de líneas, pero el siguiente código debería funcionar (y siempre puedes hacer metaprogramación para escribir un método "inmutable")

def address_id=(id) if new_record? write_attribute(:address_id, id) else raise ''address is immutable!'' end end