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
对于水果对象,我希望能够明确地询问它是否为橙色,例如,水果对象的name属性。当我调用Fruit.find_by_name('orange')。is_orange?我弄错了。我做错了什么?
答案 0 :(得分:1)
self.name == Fruit.find_by_name(n)
对我来说似乎不对。你不应该检查
self.name == n
...
你确实应该使用instance_eval。
另外,我认为将你的方法命名为橙色会更像红宝石吗?而不是is_orange?。