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
あなたの方法が呼び出されています。このように、それは誤りであるメタプログラミングではなく、メソッド内のあなたのロジックです。あなたのActiveRecord(?)の考え方を確認してください。 – Phrogz