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