0
NAMES = ['orange', 'pear']
Fruit.class_eval do
NAMES.each do |n|
define_method "is_#{n}?" do
self.name == Fruit.find_by_name(n)
end
end
end
对于水果对象,我希望能够明确地询问它是否是橙色,例如,水果对象的名称属性。当我打电话给Fruit.find_by_name('orange')。is_orange?我弄错了。我究竟做错了什么?元编程实例方法 - 语法错误?
我怀疑你应该使用[`instance_eval`](http://ilikestuffblog.com/2009/01/09/fun-with-rubys-instance_eval-and-class_eval/) – meagar 2011-02-06 15:28:43
你可以很容易地验证你的方法正在被调用。因此,这不是错误的元编程,而是你的逻辑。检查你的ActiveRecord(?)思考 – Phrogz 2011-02-06 15:34:16