Rails Delegate Set-Wert

9

Ich habe ein User.rb-Modell und ein UserSetting.rb-Modell, an das ich delegieren möchte (sowohl Getter- als auch Setter-Methoden).

in Benutzer.rb

%Vor%

Auf den ersten Blick funktioniert das großartig.

%Vor%

Aber bei näherer Betrachtung wird user.save nicht an das UserSetting-Modell weitergegeben.

%Vor%

(Der Wert wurde nicht in der Datenbank gespeichert).

Das ist meine Frage: Wie kann ich UserSetting automatisch speichern lassen, wenn eines seiner Attribute geändert und dann von seinem Benutzer gespeichert wird?

Dies sollte nur passieren, wenn ein UserSetting-Attribut geändert wird. Andernfalls wird jedes Mal, wenn ein Benutzer in der Datenbank gespeichert wird, ein zusätzliches, nicht benötigtes & amp; unerwünschtes Schreiben in die Datenbank.

    
Schneems 16.09.2011, 20:31
quelle

2 Antworten

9

Ich würde dafür einen ActiveRecord Callback ausprobieren. Ich bin nicht sicher, was in Ihrem Fall am sinnvollsten wäre, aber before_update oder after_update scheinen logisch. In Ihrem Rückruf müssen Sie manuell einen Speicheraufruf für das UserSetting-Objekt auslösen, das dem Benutzer zugeordnet ist. Es gibt wahrscheinlich Dutzende von Möglichkeiten, dies zu erreichen, aber etwas in dieser Richtung sollte funktionieren:

%Vor%     
Peter Brown 16.09.2011, 21:26
quelle
6

Verwenden Sie in Ihrem Benutzermodell für die Verknüpfung user_setting die Option autosave: true

%Vor%     
Edgars Kaukis 05.04.2016 12:33
quelle