0

我現在正面臨一個問題。Ruby在運行時生成子類

我有一個父類Item(Model)。我有兩個從Item繼承的靜態子類。

但是通過視圖窗體,我希望管理員用戶能夠在運行時創建一個新的Item子類。

class Item < ActiveRecord::Base 
#template methods 
end 

class StoreItem < Item 
#hooks for overriding template method 
end 

class OnlineItem < Item 
#hooks for overriding template method 
end 

在視圖中,我想給出一個表單,用戶可以在其中添加一個新名稱,然後單擊create,並動態創建一個新類。

我想對於幫助:

  1. 如何實現這一目標。
  2. 也是它的元編程或我必須使用 工廠模式,並給予默認的類?

回答

1

你尋找`Class.new(項目)``

例子:

require 'active_record' 

class Item < ActiveRecord::Base 
#template methods 
end 

x = Class.new(Item) 
puts x.ancestors 

一個祖先是Item

順便說一句:您的Class StoreItem < Item是錯誤的。在這種情況下,您必須使用class而不是Class。

+0

有意義,因爲Class也是ruby中的一個對象。謝謝:) (我的壞!那是在這裏打字時輸錯) –