Rails: вокруг_ * обратных вызовов - PullRequest
86 голосов
/ 15 февраля 2011

Я прочитал документацию по http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html,, но не понимаю, когда срабатывают around_* обратные вызовы в отношении before_* и after_*.

Любая помощь высоко ценится.

Спасибо.

Ответы [ 2 ]

163 голосов
/ 15 февраля 2011

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

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

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

def around_save
   #do something...
   yield #saves
   #do something else...
end
110 голосов
/ 15 февраля 2011

Обратный вызов 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...