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.integertは、配列インデックスではなくのメソッドを呼び出しているので、代わりに を呼び出してみましたt.__send__(value, key)か?

于 2012-07-27T11:26:42.787 に答える