0

我需要做的是我希望能够创建一个包含动态列的表,从哈希中检索列名及其数据类型。

请以下面的代码片段为例:

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

不幸的是,它似乎并没有按我想要的方式工作。

4

1 回答 1

1

t.integer正在调用一个方法t,而不是做一个数组索引,所以你有没有尝试过调用t.__send__(value, key)

于 2012-07-27T11:26:42.787 回答