2017-05-08 2 views
-3

Ich versuche, eine Funktion mit Callback jedes Mal nach der Erstellung des Datensatzes und der Aktualisierung des Datensatzes, die Callback-Funktion sollte ich verwenden, so dass es mir Stack-Level zu geben tief Fehler mein Modell-Code istStack-Ebene tief in Schienen Callback-Funktion

class T < ApplicationRecord 

    before_commit :calculate 
    before_update :calculate 

    def calculate 
    t = get_w + get_t + get_a 
    self.amount = t 
    self.save! 

    end 

    def get_w 
    end 

    def get_a 
    end 

    def get_t 
    end 

end 
+0

Mögliches Duplikat [Rails Stack-Ebene zu tief mit nach \ _update Methode] (http://stackoverflow.com/questions/43797001/ rails-stack-level-zu-tief-mit-nach-update-methode) –

Antwort

3

mindestens eines Ihrer Rückrufe wieder aufgerufen wird (und somit rekursiv), wenn Sie anrufen save! Methode. Versuchen Sie einfach, diese Zeile zu entfernen.

1

Das Problem, das Sie haben, ist, dass Sie eine 'before_update' haben und dann Sie speichern aufrufen, die das vor dem Update auslöst. Und das ruft wieder die gleiche Methode

1

try unten Code:

class T < ApplicationRecord 

    before_commit :calculate 
    before_update :calculate 
    def calculate 
    t = get_w + get_t + get_a 
    self.amount = t 
    #self.save! comment this line, because it call `before_commit` callback again and again 

    end 

    def get_w 
    end 

    def get_a 
    end 

    def get_t 
    end 

end