41

我了解到add_column有一个:after选项可以设置插入列的位置。太糟糕了,我了解到它:添加一堆之后。

如何编写迁移以简单地重新排序列?

4

1 回答 1

63

使用 MySQL 时,您可以调用change_column,但您必须重复列类型(只需从其他迁移中复制并粘贴它):

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

或者,如果您必须对一个表中的多个列重新排序:

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

change_columnALTER TABLE在引擎盖下调用。从 MySQL文档

您还可以使用FIRSTand AFTERin CHANGEorMODIFY操作对表中的列重新排序。

请注意,这种方法不适用于 PostgreSQL。(请参阅更改列位置

于 2013-09-19T16:39:08.160 回答