2012-10-09 17 views
5

Estoy tratando de actualizar un atributo serializado con algunos datos en una devolución de llamada after_save en el mismo objeto.Actualizar el atributo serializado sin devoluciones de llamada en Rails

No deseo que se activen devoluciones de llamada, por varias razones (efectos secundarios, bucle infinito). La forma típica de lograr esto sería usar update_column, pero desafortunadamente eso no funciona con atributos serializados.

Soy consciente de que podría poner condicionales en mis devoluciones de llamada para evitar que vuelvan a llamar, pero se siente que debería haber una forma de atributo_actualización que no desencadene devoluciones de llamada, pero todavía funciona con atributos serializados.

¿Alguna sugerencia?

Respuesta

1

Esto es lo que hago

serialize :properties, Hash 

def update_property(name, value) 
    self.properties[name] = value 
    update_column(:properties, properties) 
end 
0

Usted necesidad de codificar el hash antes de actualizar la columna:

update_column(:properties, self.class.serialized_attributes['properties'].dump(properties)) 
+0

posible que tenga que recargar después instancia – Swards

Cuestiones relacionadas