Dies ist sehr ähnlich zu Rails partial updates problem with hashes, aber die Frage wurde nicht wirklich beantwortet IMHO.Stop ActiveRecord Speichern einer serialisierten Spalte auch wenn nicht geändert
Das Problem ist folgendes: ich ein Modell mit einer serialisierten Spalte:
class Import < AR::Base
serialize :data
In meinem Fall werden diese Daten und sollte nicht geändert werden, nachdem die erste des Modells speichern/Schöpfung. Also möchte ich die Funktion von AR deaktivieren, die immer serialisierte Spalten speichert (was normalerweise eine gute Idee ist, da sie diese Änderungen nicht erkennen kann). Ich möchte das Speichern deaktivieren, da die Daten sehr groß sein können und das Modell häufig aktualisiert wird.
ich bereits habe versucht monkeypatching in ActiceRecord :: AttributeMethods :: Schmutzige wie folgt aus:
class Import
def update(*)
if partial_updates?
super(changed | (attributes.keys & (self.class.serialized_attributes.keys - ["data"])))
else
super
end
end
aber dies scheint keine Wirkung zu haben. Hat jemand eine bessere Idee?
Dies ist unter Rails 3.0.12
Das macht wirklich viel Sinn, danke für den Einblick. Ich denke, ich werde den gleichen Weg gehen und eine polymorphe Assoziation zwischen dem _Storage_ Modell und anderen verwenden, die nur serialisierte Spalten haben –