给出以下代码:
module Foo
extend ActiveSupport::Concern
module ClassMethods
def foo
puts 'foo'
end
end
end
class Bar
include Foo
end
我想做的是调用 Foo.foo
而不是 Bar.foo
。有时在原始模块上调用类方法感觉更自然,特别是当功能与包含的类无关并且与原始模块名称一起更好地描述时。
最佳答案
这看起来像是代码味道。话虽如此,您可以让 Foo 模块使用类方法扩展自身:
module Foo
extend ActiveSupport::Concern
module ClassMethods
def foo
puts 'foo'
end
end
extend ClassMethods
end
class Bar
include Foo
end
Bar.foo
Foo.foo
关于ruby-on-rails - 使用 ActiveSupport::Concern 使 ClassMethods 也可用作模块函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6619624/