Ich habe die Dokumentation unter http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html gelesen , verstehe aber nicht, wann die around_*Rückrufe in Bezug auf before_*und ausgelöst werden after_*.
Jede Hilfe sehr geschätzt.
Vielen Dank.
Ich habe die Dokumentation unter http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html gelesen , verstehe aber nicht, wann die around_*Rückrufe in Bezug auf before_*und ausgelöst werden after_*.
Jede Hilfe sehr geschätzt.
Vielen Dank.
Antworten:
around_*Rückrufe werden vor der Aktion aufgerufen. Wenn Sie die Aktion selbst aufrufen möchten, rufen Sie yieldsie auf und setzen die Ausführung fort. Deshalb heißt esaround
Die Reihenfolge lautet: before, around, after.
Ein typisches around_savewürde also so aussehen:
def around_save
#do something...
yield #saves
#do something else...
end
Der Rückruf "around_ *" wird um die Aktion und innerhalb der Aktionen "before_ *" und "after_ *" aufgerufen. Beispielsweise:
class User
def before_save
puts 'before save'
end
def after_save
puts 'after_save'
end
def around_save
puts 'in around save'
yield # User saved
puts 'out around save'
end
end
User.save
before save
in around save
out around save
after_save
=> true