Rails: round_ * обратные вызовы
Я прочитал документацию на http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html, но не понимаю, когда вызваны обратные вызовы around_*
по отношению к before_*
и after_*
.
Любая помощь очень ценится.
Спасибо.
Ответы
Ответ 1
around_*
обратные вызовы вызывают до действие, а затем, когда вы хотите вызвать само действие, вы yield
к нему, а затем продолжите выполнение. Поэтому он назвал around
Порядок выглядит следующим образом: before
, around
, after
.
Итак, типичный around_save
будет выглядеть так:
def around_save
#do something...
yield #saves
#do something else...
end
Ответ 2
Обратный вызов 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