2016-09-20 6 views
1

私は次の移行を行っています。 1つの変更で3つ以上の変更を実行する方法はありますか?1回のマイグレーション変更で複数の列を変更

def change 
change_column :comments, :attr_1, :string, null: true 
change_column :comments, :attr_2, :string, null: true 
change_column :comments, :attr_3, :string, null: true 
end 
+1

3つの移行を実行することに心配しているのはなぜですか?この種のことはRailsアプリにとってはまったく正常です。 –

答えて

6

短い答えはノーです。 change_columnメソッドは、テーブル名、カラム名、およびオプションハッシュの引数を取るように設定されています。 change_columnのソースコードは、ここで見つけることができる:https://github.com/rails/rails/blob/0fe76197d2622674e1796a9a000995a7a1f6622b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb

change_column方法における唯一のラインがある:第一引数として渡されたテーブル名をALTERスクリプトを実行 execute("ALTER TABLE #{quote_table_name(table_name)} #{change_column_sql(table_name, column_name, type, options)}")

。引数としてテーブル/カラムの配列を渡すことはできないので、一度に1つずつ行う必要があります。このパラダイムは、Railsの移行ではかなり一般的です。

関連する問題