Rails5 の migration で追加するカラムの順番を制御する
Ruby Ruby on Rails
Published: 2019-05-09

やったこと

Rails5 の migration を利用してカラムを追加する時、追加する位置を制御する方法について調べました。

確認環境

$ ruby --version
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

調査

$ rails g model Task2 name:string content:text
$ rails db:migrate

ここで、task2 テーブルに status カラムを content カラムの後に追加します。

$ rails g migration AddStatusAtToTask2s status:int

これが生成されたファイルです。

db/migrate/20190508233635_add_status_at_to_task2s.rb

class AddStatusAtToTask2s < ActiveRecord::Migration[5.2]
  def change
    add_column :task2s, :status, :int
  end
end

※ 日時部分は実行時間によって変わります。

下記のように変更します。 デフォルトのままだと、カラムが一番後に追加されます。

class AddStatusAtToTask2s < ActiveRecord::Migration[5.2]
  def change
    add_column :task2s, :status, :int, after: :content
  end
end
$ rails db:migrate

無事に意図した位置にカラムを追加することができました。

参考