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
Jacob Relkin
fonte
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
Pan Thomakos
fonte
14
Para mim, esta é a resposta mais esclarecedora . Obrigado amigo.
Arup Rakshit