2015-11-27 39 views
0

所以,我試圖讓一個小的「社交網絡」爲教育目的,但我堅持給用戶在數據庫中的「朋友」。你可以以更簡單的方式做到這一點,但我能想到的唯一方法就是爲每個包含朋友的用戶分配一張表。使用DataMapper動態創建表(類)?

但是,要做到這一點,我需要動態地創建表格作爲表格名稱的變量。我已經嘗試過使用const_set,但由於某種原因它似乎不適用於DataMapper(或者我可能只是愚蠢的)。當我嘗試添加屬性時,請繼續收到類似uninitialized constant Serial的錯誤。

那我該怎麼辦?有解決方案嗎?我能否以其他方式動態創建表格?或者有更簡單的方法來拯救朋友。

謝謝。

+0

爲什麼你需要多個表? – Cereal

+0

管理提出了一個解決方案。仍然好奇如何做到這一點。它可能派上用場。 – SlimeyStuff

+0

回答你自己的問題對你來說是件好事,然後給出答案的複選標記以表明它是一個工作解決方案。其他與您具有相同問題的人將很高興知道解決方案是什麼。 –

回答

0
module DMSerial 
    def self.included base 
    base.class_eval do 
     include DataMapper::Resource 
     property :id,   base::Serial 
    end 
    end 
end 

def create_model model_name, &block 
    Object.const_set(model_name, Class.new) 
    model = Object.const_get(model_name) 
    model.class_eval {include DMSerial} 
    model.class_eval &block 
end 

[1,2,3].each do |num| 

    create_model "Model#{num}" do 
    property :val, Integer, :default => num 
    end 

end