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

时间:2013-09-19 15:33:35

标签: ruby-on-rails ruby migration ruby-on-rails-4

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

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

2 个答案:

答案 0 :(得分:57)

您可以致电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 documentation

  

您还可以在FIRSTAFTER操作中使用CHANGEMODIFY   重新排序表中的列。

答案 1 :(得分:-2)

如果您只处理少数几个专栏,那么Stefan的解决方案是完美的。如果您要重新安排多个列 AND 恰好在Mac上,我建议您查看Sequel Pro,这是一个漂亮的数据库管理工具,可以重新排序数据库列轻而易举。只需拖放即可。

PS:我不以任何方式与他们有任何关系。