Rails 4迁移:如何重新排序列

eme*_*his 38 ruby migration ruby-on-rails ruby-on-rails-4

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

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

Ste*_*fan 58

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

def up
  change_column :your_table, :some_column, :integer, after: :other_column
end
Run Code Online (Sandbox Code Playgroud)

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

def up
  change_table :your_table do |t|
    t.change :some_column, :integer, after: :other_column
    # ...
  end
end
Run Code Online (Sandbox Code Playgroud)

change_columnALTER TABLE引擎盖下的电话.从MySQL 文档:

您还可以使用FIRSTAFTERin CHANGEMODIFY操作来重新排序表中的列.

  • 这一切都不适用于postgres-不可能重新排序列http://stackoverflow.com/a/31683264/165673 (6认同)
  • @Emerson Rails目前无法反转`change_column`.你真的要恢复列顺序吗? (2认同)