J'ai lu la documentation sur http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , mais je ne comprends pas quand les around_*
rappels sont déclenchés par rapport à before_*
et after_*
.
Toute aide très appréciée.
Merci.
J'ai lu la documentation sur http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , mais je ne comprends pas quand les around_*
rappels sont déclenchés par rapport à before_*
et after_*
.
Toute aide très appréciée.
Merci.
Réponses:
around_*
les callbacks sont invoqués avant l'action, puis lorsque vous souhaitez appeler l'action elle-même, vous yield
y allez , puis continuez l'exécution. C'est pourquoi ça s'appellearound
L'ordre va comme ceci: before
, around
, after
.
Donc, un typique around_save
ressemblerait à ceci:
def around_save
#do something...
yield #saves
#do something else...
end
Le rappel around_ * est appelé autour de l'action et à l'intérieur des actions before_ * et after_ *. Par exemple:
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