如何在Rails 3中指定使用迁移添加的字段顺序?

如何指定我想在哪个字段中添加新列? (我不希望在时间戳之后在底部添加字段)

add_column :users, :is_active, :boolean

方法如下:

 add_column :users, :is_active, :boolean, :after => :some_column 

其中:some_column是要添加的列的名称:is_active after。

一般来说,你不能和你不应该在意。 关系数据库中的表实际上没有任何特定的顺序; 这就是为什么你应该在INSERT时总是指定列,并且永远不会说select * ... (是的,ActiveRecord会这样做,但是那并不意味着这是一个好主意,只是因为AR跳下悬崖没有不是说你应该等等。

如果你坚持尝试为它做数据库的工作,那么可移植的方式是:

  1. 将表复制或重命名为另一个表。
  2. 删除原始文件(除非您在(1)中重命名)。
  3. 使用所需顺序的列创建新表。
  4. 希望数据库在(3)中关注您的订单。
  5. 将数据从(1)中的表复制到(3)中的“新”表。
  6. 利润。

如果您使用的是MySQL或MySQL2数据库适配器,则可以使用:after => :some_column选项 add_column 。 如果您使用的是SQLite或PostgreSQL,请参阅上面的可移植方式。 如果您正在使用其他任何内容,那么您必须阅读adapater的文档或源代码以查看支持的内容。

但你应该问自己为什么在继续之前你认为你想要这样做。