web-dev-qa-db-fra.com

Rails: around_ * rappels

J'ai lu la documentation sur http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html , mais je ne comprends pas quand le around_* les rappels sont déclenchés par rapport à before_* et after_*.

Toute aide très appréciée.

Merci.

89
gjb

around_* les rappels sont invoqués avant l'action, puis quand vous voulez invoquer l'action elle-même, vous yield, puis continuez l'exécution. C'est pourquoi il s'appelle around

L'ordre se présente comme suit: before, around, after.

Donc, un around_save ressemblerait à ceci:

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

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