ruby-on-rails – 在一个包含在Class中的Module中使用define_method?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在一个包含在Class中的Module中使用define_method?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样的事情:
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

这也行不通:/

澄清……我想用:

User.first.foo

MyModule.foo

解决方法

你总是可以使用extend self trick:
module MyModule
  define_method(:foo){ puts "yeah!" }

  extend self
end

这具有使该模块既是mixin又是单身的效果.

猜你在找的Ruby相关文章