Rails: around_ * callbacks


Respostas:


178

around_*os callbacks são invocados antes da ação, então, quando você quiser invocar a própria ação, você yielda invoca e continua a execução. É por isso que é chamadoaround

A ordem é a seguinte: before, around, after.

Então, um típico around_saveseria assim:

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

4
Faz sentido e não está nos guias oficiais do Rails.
Dan S.

120

O callback around_ * é chamado em torno da ação e dentro das ações before_ * e after_ *. Por exemplo:

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
Para mim, esta é a resposta mais esclarecedora . Obrigado amigo.
Arup Rakshit
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.