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