Esto es muy similar a Rails partial updates problem with hashes, pero la pregunta realmente no ha sido respondida en mi humilde opinión.Detener ActiveRecord guardar una columna serializada, incluso si no se ha cambiado
El problema es el siguiente: Tengo un modelo con una columna en serie:
class Import < AR::Base
serialize :data
En mi caso, estos datos, y deben, no cambia después de que el primer salvamento/creación del modelo. Por lo tanto, quiero desactivar la característica de AR que siempre guarda columnas serializadas (que normalmente es una buena idea, ya que no puede detectar esos cambios). Quiero desactivar el guardado porque los datos pueden ser bastante grandes y el modelo se actualizará con frecuencia.
Ya he probado monkeypatching en ActiceRecord :: :: AttributeMethods sucios como esto:
class Import
def update(*)
if partial_updates?
super(changed | (attributes.keys & (self.class.serialized_attributes.keys - ["data"])))
else
super
end
end
pero esto parece tener ningún efecto. ¿Alguien tiene una mejor idea?
Esto está bajo rieles 3.0.12
Esto realmente tiene mucho sentido, gracias por compartir la información. Creo que voy a seguir el mismo camino, y usar una asociación polimórfica entre el modelo _Storage_ y otros que tienen columnas serializadas de solo lectura –