Rails 4 migration: how to reorder columns

后端 未结 1 672
既然无缘
既然无缘 2020-12-08 06:34

I learned that add_column has an :after option to set where the column gets inserted. Too bad I learned about it :after adding a bunch.

How

相关标签:
1条回答
  • 2020-12-08 07:12

    When using MySQL, you can call change_column, but you have to repeat the column type (just copy and paste it from your other migration):

    def up
      change_column :your_table, :some_column, :integer, after: :other_column
    end
    

    Or if you have to reorder multiple columns in one table:

    def up
      change_table :your_table do |t|
        t.change :some_column, :integer, after: :other_column
        # ...
      end
    end
    

    change_column calls ALTER TABLE under the hood. From the MySQL documentation:

    You can also use FIRST and AFTER in CHANGE or MODIFY operations to reorder columns within a table.

    Note that this approach doesn't work with PostgreSQL. (see Alter column positions)

    0 讨论(0)
提交回复
热议问题