Rails: around_ * callbacks


Câu trả lời:


178

around_*callbacks được gọi trước hành động, sau đó khi bạn muốn gọi chính hành động đó, bạn yieldphải thực hiện nó, sau đó tiếp tục thực thi. Đó là lý do tại sao nó được gọi làaround

Trình tự đi như thế này: before, around, after.

Vì vậy, một điển hình around_savesẽ trông như thế này:

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

4
Nó có ý nghĩa và không có trong hướng dẫn chính thức của Rails.
Dan S.

120

Lệnh gọi lại around_ * được gọi xung quanh hành động và bên trong các hành động before_ * và after_ *. Ví dụ:

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
Đối với tôi đây là câu trả lời sáng suốt nhất . Cảm ơn bạn.
Arup Rakshit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.