web-dev-qa-db-ja.com

Rails 4:既存のテーブルに複数の列を追加

既存のテーブルに1つの列を追加する方法を知っています。次に、既存のテーブルに多くの列を追加する必要があります。短い方法はありますか:

add_col1_col2_col3_col4_.._coln_to_tables col1:integer col2:integer etc...

追加する必要があるすべての追加列に対して上記を行う必要がありますか?

21
Sylar

必要ありません。できるよ

TableNameがユーザーであると仮定します

Rails g migration AddColumnsToUser col1:integer col2:integer .. etc.
42
Shweta

ActiveRecord:Migrations には、データベースを操作するために使用できるすべてのコマンドをリストした優れたリソースがあります。次の方法でもタスクを実行できます。

Rails g migration AddMoreColumnsToModel

次に、移行ファイルを開いて以下を配置します。

def change
  add_column :table, :new_column, :type
  # add as many columns as you need 
end

同じタイプの文字列が100個自動作成されるMaxdの提案を実行したい場合は、彼のコードをお勧めします。

16
Proto

移行を作成してこれらの列を生成するだけです:

class ChangeTables < ActiveRecord::Migration
  def change
    change_table :tables do |t|
      100.times do |i|
        t.integer :"column_#{i}"
      end
    end
  end
end
5
Maxim Dobryakov

上記の回答に似ていますが、目的を理解するためには、命名規則の下に希望があります。

Rails g migration add_first_column_and_second_column_to_model first_column:string second_column:string
2
Dinesh Pallapa

この移行ファイルはループで実行できます。しかし、あなたは本当にこれをやりたいですか?そのような重いモデルを作成してすべてを保持するのは正しくありません。

1
IcyBright

new modelおよびtablecolumnsを作成するコマンド:

Rails g model ModelName col_name1:string col_name2:integer col_name3:text ...

既存のテーブルの下にcolumnsを追加するコマンド:

Rails g migration AddColumnToModelName col_name4:string col_name5:integer ...

最後に、コマンドでmigrationを実行します。

rake db:migrate
0
puneet18