2011-01-24 57 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