Рельсы: around_ * обратные вызовы


Ответы:


179

around_*обратные вызовы вызываются перед действием, затем, когда вы хотите вызвать само действие, вы yieldпереходите к нему, а затем продолжаете выполнение. Вот почему это называетсяaround

Порядок выглядит следующим образом : before, around, after.

Итак, типичный вариант around_saveбудет выглядеть так:

def around_save
   #do something...
   yield #saves
   #do something else...
end

4
Это имеет смысл и отсутствует в официальных руководствах по Rails.
Дэн С.

121

Обратный вызов 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

14
Для меня это самый яркий ответ. Спасибо друг.
Аруп Ракшит
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.