繁体   English   中英

Rails:扩展alias_method_chain

[英]Rails: extending alias_method_chain

有一个Rails 4.2.6应用程序,该应用程序具有一个核心插件,可以通过alias_method_chain扩展ActiveRecord reload方法。
我需要编写另一个扩展相同基本功能的插件,并保留核心插件添加的内容。
就我所知,我只能调用alias_method_chain一次,但我希望得到这样的东西:

class Klass
  def foo
end

core_plugin:
  base.send :alias_method_chain, :foo, :bar

my_plugin:
  base.send :alias_method_chain, :foo, :baz

调用Klass.foo会导致调用:baz:bar:foo

那么,假设我无法编辑core_plugin,我有哪些选择?

你需要这样的东西

克拉斯班

def foo
    puts "foo"
    end
def baz
    puts "printing baz..."
bar
    puts "...printing bar"
  end

  alias_method :bar, :foo
  alias_method :foo, :baz
end

Klass.new.foo

版画

打印baz ... foo ... print bar

这是您的期望吗? 如果没有请解释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM