Eu li a documentação em http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , mas não entendo quando os around_*
retornos de chamada são acionados em relação a before_*
e after_*
.
Qualquer ajuda muito apreciada.
Obrigado.
Eu li a documentação em http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , mas não entendo quando os around_*
retornos de chamada são acionados em relação a before_*
e after_*
.
Qualquer ajuda muito apreciada.
Obrigado.
Respostas:
around_*
os callbacks são invocados antes da ação, então, quando você quiser invocar a própria ação, você yield
a invoca e continua a execução. É por isso que é chamadoaround
A ordem é a seguinte: before
, around
, after
.
Então, um típico around_save
seria assim:
def around_save
#do something...
yield #saves
#do something else...
end
O callback around_ * é chamado em torno da ação e dentro das ações before_ * e after_ *. Por exemplo:
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