如何在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)中重命名)。
- 使用所需顺序的列创建新表。
- 希望数据库在(3)中关注您的订单。
- 将数据从(1)中的表复制到(3)中的“新”表。
- …
- 利润。
如果您使用的是MySQL或MySQL2数据库适配器,则可以使用:after => :some_column
选项 add_column
。 如果您使用的是SQLite或PostgreSQL,请参阅上面的可移植方式。 如果您正在使用其他任何内容,那么您必须阅读adapater的文档或源代码以查看支持的内容。
但你应该问自己为什么在继续之前你认为你想要这样做。