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
Quieres attr_readonly
.