He leído la documentación en http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , pero no entiendo cuándoaround_*
se activan devoluciones de llamada en relación con before_*
y after_*
.
Cualquier ayuda muy apreciada.
Gracias.
He leído la documentación en http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , pero no entiendo cuándoaround_*
se activan devoluciones de llamada en relación con before_*
y after_*
.
Cualquier ayuda muy apreciada.
Gracias.
Respuestas:
around_*
las devoluciones de llamada se invocan antes de la acción, luego, cuando desee invocar la acción en sí, acceda yield
a ella y luego continúe la ejecución. Por eso se llamaaround
El orden es el siguiente: before
, around
, after
.
Entonces, un típico around_save
se vería así:
def around_save
#do something...
yield #saves
#do something else...
end
La devolución de llamada around_ * se llama alrededor de la acción y dentro de las acciones before_ * y after_ *. Por ejemplo:
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