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方法