作成するmigrationファイルの処理は、1つのカラムを追加するというシンプルな処理のみを行う。
しかしdefault値は設定せず、全レコード上の作成されるカラムには、特定の値を埋め込みたいという要件があったため
migration実行時にカラムを追加後、その特定値を埋め込む処理も同時に入れたくなった。
以下のページが参考になった。
qiita.com
class ChangeTests < ActiveRecord::Migration def change add_column :sample_tables, :test_column, :string, :after => :previous_column begin ActiveRecord::Base.connection.execute("START TRANSACTION") ActiveRecord::Base.connection.execute(" UPDATE sample_tables SET new_column = 'default_value' WHERE new_column IS NULL; ") ActiveRecord::Base.connection.execute("COMMIT") rescue => e ActiveRecord::Base.connection.execute("ROLLBACK") raise "Error: #{e.to_s}" end end end