我有这样的事情:
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又是单身的效果.