2012-10-09 6 views
5

Ich versuche, ein serialisiertes Attribut mit einigen Daten in einem After_Save-Rückruf für dasselbe Objekt zu aktualisieren.Serialisiertes Attribut ohne Callbacks in Rails aktualisieren

Ich möchte keine Rückrufe aus verschiedenen Gründen (Nebenwirkungen, Endlosschleife) ausgelöst werden. Der typische Weg, dies zu erreichen, wäre die Verwendung update_column, aber das funktioniert leider nicht mit serialisierten Attributen.

Ich bin mir bewusst, dass ich Bedingungen auf meine Callbacks setzen konnte, um zu vermeiden, dass sie erneut aufgerufen werden, aber es gibt eine Form von update_attribute, die keine Callbacks auslöst, aber immer noch mit serialisierten Attributen funktioniert.

Irgendwelche Vorschläge?

Antwort

1

Das ist, was ich tue

serialize :properties, Hash 

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

Sie müssen den Hash Code vor der Spalte Aktualisierung:

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

Mai Instanz später neu geladen werden müssen – Swards

Verwandte Themen