Przeczytałem dokumentację na http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , ale nie rozumiem, kiedy around_*wywołania zwrotne są uruchamiane w odniesieniu do before_*i after_*.
Każda pomoc bardzo doceniona.
Dzięki.
Przeczytałem dokumentację na http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , ale nie rozumiem, kiedy around_*wywołania zwrotne są uruchamiane w odniesieniu do before_*i after_*.
Każda pomoc bardzo doceniona.
Dzięki.
Odpowiedzi:
around_*wywołania zwrotne są wywoływane przed akcją, a następnie, gdy chcesz wywołać samą akcję yield, przejdź do niej, a następnie kontynuuj wykonywanie. Dlatego to się nazywaaround
Kolejność idzie tak: before, around, after.
Tak więc typowy around_savewyglądałby tak:
def around_save
#do something...
yield #saves
#do something else...
end
Wywołanie zwrotne around_ * wywoływane jest wokół akcji oraz wewnątrz akcji before_ * i after_ *. Na przykład:
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