我了解到add_column
有一个:after
选项可以设置插入列的位置。太糟糕了,我了解到它:添加一堆之后。
如何编写迁移以简单地重新排序列?
我了解到add_column
有一个:after
选项可以设置插入列的位置。太糟糕了,我了解到它:添加一堆之后。
如何编写迁移以简单地重新排序列?
使用 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_column
ALTER TABLE
在引擎盖下调用。从 MySQL文档:
您还可以使用
FIRST
andAFTER
inCHANGE
orMODIFY
操作对表中的列重新排序。
请注意,这种方法不适用于 PostgreSQL。(请参阅更改列位置)