我有这段代码:
module Helper
def translates(*attributes)
attributes.each do |attribute|
define_method("find_by_#{attribute}") do |value|
value
end
end
end
end
class SomeClass
extend Helper
translates :foo
end
现在,在我看来,方法SomeClass.find_by_foo
应该存在。但事实并非如此。你知道我做错了吗?
答案 0 :(得分:2)
您会发现SomeClass.new.respond_to?(:find_by_foo)
返回true。如果要将方法添加到类侧,请使用define_singleton_method
。
答案 1 :(得分:1)
您可以使用特征类将方法定义为类方法。例如:
module Helper
def translates(*attributes)
attributes.each do |attribute|
define_singleton_method("find_by_#{attribute}") do |value|
value
end
end
end
end