Rails: around_ * rappels

Réponses:

179

around_*les callbacks sont invoqués avant l'action, puis lorsque vous souhaitez appeler l'action elle-même, vous yieldy allez , puis continuez l'exécution. C'est pourquoi ça s'appellearound

L'ordre va comme ceci: before, around, after.

Donc, un typique around_saveressemblerait à ceci:

def around_save
   #do something...
   yield #saves
   #do something else...
end
Jacob Relkin
la source
4
Cela a du sens et ne figure pas dans les guides officiels de Rails.
Dan S.
121

Le rappel around_ * est appelé autour de l'action et à l'intérieur des actions before_ * et after_ *. Par exemple:

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
Pan Thomakos
la source
14
Pour moi, c'est la réponse la plus éclairante . Merci mon ami.
Arup Rakshit