Rails 4: Überspringen Rückruf
Habe ich eine Auktion und ein Gebot Objekt in meiner Anwendung, wenn jemand drückt die GEBOT SCHALTFLÄCHE es ruft dann die ANGEBOT ERSTELLEN controller, erstellt das Angebot, und braucht dann einige andere Dinge auf der Auktion Objekt:
GEBOTE-CONTROLLER -> ERSTELLEN
@auction.endtime += @auction.auctiontimer
@auction.winner = @auction.arewinning
@auction.save
AUKTION MODELL
before_update :set_endtime
def set_endtime
self.endtime=self.starttime+self.auctiontimer
end
Die Frage ist also: Wie kann C überspringen ", bevor callback" - nur, in diesem speziellen @ - Auktion.speichern
so dass Sie nicht ausführen möchten, den Rückruf, wenn es ein neuer Datensatz ist? oder kommt es auf die Aktion?
mögliche Duplikate von Wie kann ich vermeiden, laufen ActiveRecord Rückrufe?
ich habe versucht, mit dieser Antwort, aber ich denke, dass funktioniert nicht in rails 4
mögliche Duplikate von Wie kann ich vermeiden, laufen ActiveRecord Rückrufe?
ich habe versucht, mit dieser Antwort, aber ich denke, dass funktioniert nicht in rails 4
InformationsquelleAutor Crazy Barney | 2013-10-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
skip_callback
ist eine komplizierte und nicht granular-option.Ich lieber einen attr_accessor:
Diese Weise können Sie deklarativ sein, wenn das überspringen einer callback:
unter Berücksichtigung der Ansatz, den ich versucht habe etwas andere Lösung, die funktioniert mit
rails 5
. Bitte überprüfen Sie diese Antwort stackoverflow.com/a/42945367/4675524in welcher Weise ist
skip_callback
nicht körnig?InformationsquelleAutor juanpastas
Können Sie versuchen, das überspringen Rückruf mit skip_callback
http://www.rubydoc.info/docs/rails/4.0.0/ActiveSupport/Callbacks/ClassMethods:skip_callback
InformationsquelleAutor akusy
ActiveSupport::Rückrufe::ClassMethods#skip_callback ist nicht threadsicher, es wird entfernen von callback-Methoden für die Zeit, bis es ausgeführt wird und somit und ein anderer thread zur gleichen Zeit nicht bekommen kann die callback-Methoden für die Ausführung.
Blick auf den informativen Beitrag von Allerin - SPEICHERN SIE EIN OBJEKT ÜBERSPRINGEN RÜCKRUFE IN DER RAILS-APPLIKATION
InformationsquelleAutor Allerin
Können Sie update_columns
Sehen Sie diese http://edgeguides.rubyonrails.org/active_record_callbacks.html#skipping-callbacks
Gibt es eine bestimmte Bedingung, wie wenn Sie nicht haben, endtime, dann nur Sie müssen, um das Ende der Zeit, wenn, die Sie tun können,
ODER
Gibt es eine bestimmte Bedingung, wie wenn Sie nicht haben, endtime, dann nur Sie müssen, um das Ende der Zeit, wenn, die Sie tun können, def set_endtime wenn endtime.nil? selbst.endtime=selbst.starttime+selbst.auctiontimer end end
Update meine Antwort mit Beispiel
Dies ist die richtige Antwort für speichern/aktualisieren Rückrufe!
InformationsquelleAutor userxyz