Questo è molto simile a Rails partial updates problem with hashes, ma la domanda non è stata ancora risposta IMHO.Arresta ActiveRecord salvando una colonna serializzata anche se non è stata modificata
Il problema è questo: ho un modello con una colonna serializzato:
class Import < AR::Base
serialize :data
Nel mio caso, questi dati saranno, e dovrebbero, non cambia dopo il primo salvataggio/creazione del modello. Quindi voglio disabilitare la funzionalità di AR che salva sempre le colonne serializzate (che di solito è una buona idea, dato che non può rilevare quelle modifiche). Voglio disabilitare il salvataggio perché i dati possono essere abbastanza grandi e il modello verrà aggiornato frequentemente.
Ho già provato monkeypatching in ActiceRecord :: :: AttributeMethods sporco come questo:
class Import
def update(*)
if partial_updates?
super(changed | (attributes.keys & (self.class.serialized_attributes.keys - ["data"])))
else
super
end
end
ma questo sembra non avere alcun effetto. Qualcuno ha un'idea migliore?
Questo è sotto Rails 3.0.12
Questo in realtà ha molto senso, grazie per aver condiviso l'intuizione. Penso che ho intenzione di seguire lo stesso percorso e utilizzare un'associazione polimorfica tra il modello _Storage_ e altri che hanno colonne serializzate di sola lettura –