2012-07-27 79 views
0

我需要做的是我想能夠創建一個動態列的表,從列表中檢索列名和數據類型。如何在ruby-on-rails中動態創建帶有動態列名的表?

請把下面的代碼片段例如:

COLUMNS = { :column1 => 'integer', 
       :column2 => 'string', 
       :column3 => 'string', 
       :column4 => 'date' 
       } 

在靜態的方式,我可以這樣做:

create_table :details do |t| 
    t.integer column1 
    t.string column2 
    t.string column3 
    t.date column4 
    t.timestamps 
end 

但是,你知道,這看起來有點硬編碼,我對此並不滿意。

我的想法是讓它看起來更像:

create_table :details do |t| 

    COLUMNS.each_pair do |key,value| 
    #to define each column and its data type 
    t[value] key 
    end 

    t.timestamps 
end 

不幸的是,它似乎並沒有爲我工作,我想要的方式。

回答

1

t.integer正在調用方法t,沒有做數組索引,所以你試過,而不是調用t.__send__(value, key)