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ê yielda invoca e continua a execução. É por isso que é chamadoaround
A ordem é a seguinte: before, around, after.
Então, um típico around_saveseria 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