Rails: around_ * callbacks

Odpowiedzi:

179

around_*wywołania zwrotne są wywoływane przed akcją, a następnie, gdy chcesz wywołać samą akcję yield, przejdź do niej, a następnie kontynuuj wykonywanie. Dlatego to się nazywaaround

Kolejność idzie tak: before, around, after.

Tak więc typowy around_savewyglądałby tak:

def around_save
   #do something...
   yield #saves
   #do something else...
end
Jacob Relkin
źródło
4
Ma to sens i nie ma go w oficjalnych przewodnikach Rails.
Dan S.
120

Wywołanie zwrotne around_ * wywoływane jest wokół akcji oraz wewnątrz akcji before_ * i after_ *. Na przykład:

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
źródło
14
Dla mnie to najbardziej pouczająca odpowiedź. Dziękuję przyjacielu.
Arup Rakshit