إلى حد ما يمكنك استبدال/توسيع المنطق في الفئات الموجودة. قد يكون هذا خيارًا لتوسيع المكون الإضافي المجمع. ستقوم بكتابة مكون إضافي جديد يضيف المنطق المعدل فقط. باستخدام إلحاق الوحدة (module prepend).
enabled_site_setting :myoverridingplugin_enabled
module ::MyOverridingPlugin
PLUGIN_NAME = "my-overriding-plugin"
class Engine < ::Rails::Engine
engine_name MyOverridingPlugin::PLUGIN_NAME
isolate_namespace MyOverridingPlugin
end
module SomeClassOverrides
def overriding_method(foo, bar)
if foo == "something"
# قم بشيء مخصص
else
# سيؤدي هذا إلى استدعاء المنطق الأصلي
super(f00, bar)
end
end
end
end
after_initialize do
SomeClass.prepend(MyOverridingPlugin::SomeClassOverrides)
end
لقد استخدمت هذا المُنشئ لتحديد بعض وحدات التحكم في ظل ظروف معينة.