如何在rails 3.x迁移中更改新列的位置

我创建了一个只添加新列的迁移,但是我希望在created_at和updated_at列之前添加它,是否有办法指定新列的创建位置?

我搜索过,只发现有人说要在add_column中使用:after选项,但它没有做任何事情。 然后我查看了rails api文档,发现没有这样的选项。

选项适合我

add_column :table_name, :column_name, :type, :after => :column_name 

还看看这个问题 。

根据我的研究, :after选项不适用于SQLitePostgres ,因为这些DBMS不允许这样的操作。 但是,该选项适用于MySQL

参考文献:

  1. SQLite: https : //www.sqlite.org/lang_altertable.html – 这基本上告诉您创建一个具有正确列排序的新表,然后复制数据。

  2. Postgres: https : //wiki.postgresql.org/wiki/Alter_column_position