web-dev-qa-db-ja.com

Rails:around_ *コールバック

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html でドキュメントを読みましたが、around_*およびbefore_*に関連してafter_*コールバックがトリガーされるタイミングがわかりません。

助けていただければ幸いです。

ありがとう。

89
gjb

around_*コールバックが呼び出されますbeforeアクション。アクション自体を呼び出す場合は、yieldを呼び出してから、実行を継続します。それがaroundと呼ばれる理由です

順序は次のようになります:beforearoundafter

したがって、典型的なaround_saveは次のようになります。

def around_save
   #do something...
   yield #saves
   #do something else...
end
167
Jacob Relkin

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
113
Pan Thomakos