2011-01-24 123 views
0

这里是我当前的代码:元编程 - 多种方法

class << self 
     NAMES.each do |item_name| 
      item = nil 
      define_method "#{item_name}" do 
      item = find_by_name(item_name) 
      end 

      define_method "#{item_name}_id" do 
       item.id 
      end 
     end 
    end 

我得到一个错误,当我尝试调用Item.balloon_id,例如,因为它说的不能叫零的对象。什么是正确的代码?

回答

2

很难说,因为你没有说我们是什么类“in”。我猜我们在Item ,但我是一个有点不清楚为什么你item = nil

item = nil我相信是混淆同名的方法为你的实例变量@item。

另一种方法可以调用上面定义的方法。

E.G

define_method "#{item_name}_id" do 
    self.send(item_name).id 
end 
+0

什么是 “送” 的方法呢? – keruilin 2011-01-24 04:15:43