Rails: around_ * callbacks


99

ฉันต้องอ่านเอกสารที่http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.htmlแต่ไม่เข้าใจเมื่อaround_*เรียกกลับจะมีการหารือเกี่ยวกับการและbefore_*after_*

ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

ขอบคุณ.

คำตอบ:


181

around_*การเรียกกลับจะถูกเรียกใช้ก่อนการดำเนินการจากนั้นเมื่อคุณต้องการเรียกใช้การดำเนินการเองคุณyieldจะเรียกใช้จากนั้นดำเนินการต่อ นั่นเป็นเหตุผลที่เรียกว่าaround

beforeการสั่งซื้อไปเช่นนี้ around, after,

ดังนั้นโดยทั่วไปaround_saveจะมีลักษณะดังนี้:

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

4
มันสมเหตุสมผลและไม่อยู่ในคู่มือ Rails อย่างเป็นทางการ
Dan S.

123

การเรียกกลับ around_ * เรียกรอบ ๆ การดำเนินการและภายในการดำเนินการ before_ * และ after_ * ตัวอย่างเช่น:

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
สำหรับฉันนี่คือคำตอบที่สว่างไสวที่สุด ขอบคุณเพื่อน.
Arup Rakshit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.