Ruby on rails 在包含在类中的模块中使用define_方法?
我得到了这样的东西:Ruby on rails 在包含在类中的模块中使用define_方法?,ruby-on-rails,ruby,module,metaprogramming,Ruby On Rails,Ruby,Module,Metaprogramming,我得到了这样的东西: module MyModule define_method(:foo){ puts "yeah!" } end class User include MyModule end MyModule.instance_methods 但这并没有达到预期的效果。。。它们没有定义。 此外,我还需要使用该模块,因为我想将其中的方法与普通用户方法区分开来。我喜欢这样: module MyModule define_method(:foo){ puts "yeah
module MyModule
define_method(:foo){ puts "yeah!" }
end
class User
include MyModule
end
MyModule.instance_methods
但这并没有达到预期的效果。。。它们没有定义。
此外,我还需要使用该模块,因为我想将其中的方法与普通用户方法区分开来。我喜欢这样:
module MyModule
define_method(:foo){ puts "yeah!" }
end
class User
include MyModule
end
MyModule.instance_methods
请帮忙。。我错过了什么?
我还尝试:
module MyModule
(class << self; self; end).class_eval do
define_method(:foo){ puts "yeah!" }
end
end
不是
如果你想拥有一个类方法,下面的方法可以
module MyModule
define_singleton_method(:foo){ puts "yeah!" }
end
MyModule.foo
# >> yeah!
您始终可以使用
extend self
技巧:
module MyModule
define_method(:foo){ puts "yeah!" }
extend self
end
这会使此模块同时成为mixin和singleton。在我看来还行:
modulemymodule;结束
=>无
类用户;包括MyModule;结束
=>用户
模块MyModule;定义_方法(:foo){puts“yes!”};结束
=>#
用户。新建.foo
耶代码>=>nil
MyModule.instance\u方法