Rails:around_ *コールバック


回答:


178

around_*コールバックはアクションの前に呼び出され、次にアクション自体を呼び出したい場合は、それを呼び出してyield実行を続行します。それが呼ばれる理由ですaround

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

したがって、通常around_saveは次のようになります。

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

4
これは理にかなっており、公式のRailsガイドには含まれていません。
Dan S.

120

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
私にとってこれは最も明るい答えです。ありがとう、友達。
Arup Rakshit 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.