قبول الحجج للطريقة المحددة بواسطة add_to_class

يمكن إضافة أساليب الأمثلة إلى الفئات بواسطة الإضافات باستخدام add_to_class، المعرفة على النحو التالي:

def add_to_class(class_name, attr, &block)
  reloadable_patch do |plugin|
    klass = class_name.to_s.classify.constantize rescue class_name.to_s.constantize
    hidden_method_name = :"#{attr}_without_enable_check"
    klass.public_send(:define_method, hidden_method_name, &block)

    klass.public_send(:define_method, attr) do |*args|
      public_send(hidden_method_name, *args) if plugin.enabled?
    end
  end
end

هل توجد طريقة موجودة للقيام بشيء مشابه لهذا، حيث يأخذ الأسلوب المُعرَّف حججًا؟

add_to_class(Guardian, :ensure_user_can_access_report, group, report) do
  ...
end

يبدو أن هذا ما تبحث عنه. يُعد مثالًا جيدًا.

إذًا، بشكل أساسي، ستحتاج إلى جعل تلك المعاملات معاملات للـ lambda نفسها.

نعم، هذا بالضبط. شكرًا لك!

يمكنك فعل الشيء نفسه بالطريقة الروبي أيضًا.