Я прочитав документацію за адресою http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , але не розумію, коли around_*
зворотні виклики спрацьовують стосовно before_*
та after_*
.
Будь-яка допомога дуже цінується.
Дякую.
Я прочитав документацію за адресою http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , але не розумію, коли around_*
зворотні виклики спрацьовують стосовно before_*
та after_*
.
Будь-яка допомога дуже цінується.
Дякую.
Відповіді:
around_*
зворотні виклики викликаються до дії, потім, коли ви хочете викликати саму дію, ви yield
до неї, потім продовжуєте виконання. Ось чому це називаєтьсяaround
Порядок виглядає наступним чином : before
, around
, after
.
Отже, типовий around_save
буде виглядати так:
def around_save
#do something...
yield #saves
#do something else...
end
Зворотний виклик around_ * викликається навколо дії та всередині дій before_ * та after_ *. Наприклад:
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