Ruby on rails 有没有办法控制ActiveRecord迁移中的列顺序?

Ruby on rails 有没有办法控制ActiveRecord迁移中的列顺序?,ruby-on-rails,ruby,activerecord,migration,Ruby On Rails,Ruby,Activerecord,Migration,我想使用迁移将列添加到表中。是否有办法将其添加到特定位置,而不是最后一列?我可以在API文档中找到任何“订单”选项。我不相信“本机”迁移可以做到这一点。原因是许多数据库不支持在任意位置添加列。对于不支持它的数据库,要做到这一点,您需要经历很多困难 如果您的数据库确实支持它,并且您不希望支持多个数据库,那么您可以在迁移中直接使用execute语句。我不认为“本机”迁移可以做到这一点。原因是许多数据库不支持在任意位置添加列。对于不支持它的数据库,要做到这一点,您需要经历很多困难 如果您的DB确实支持

我想使用迁移将列添加到表中。是否有办法将其添加到特定位置,而不是最后一列?我可以在API文档中找到任何“订单”选项。

我不相信“本机”迁移可以做到这一点。原因是许多数据库不支持在任意位置添加列。对于不支持它的数据库,要做到这一点,您需要经历很多困难


如果您的数据库确实支持它,并且您不希望支持多个数据库,那么您可以在迁移中直接使用execute语句。

我不认为“本机”迁移可以做到这一点。原因是许多数据库不支持在任意位置添加列。对于不支持它的数据库,要做到这一点,您需要经历很多困难


如果您的DB确实支持它,并且您不希望支持多个数据库,那么您可以在迁移中直接使用execute语句。

事实上,这不是迁移API的一部分,但是如果您愿意放弃供应商中立性(并且您的DB支持它),那么这可能是一件非常容易实现的事情

如果您使用的是MySQL,这里有一个MysqlAdapter的猴子补丁,它将添加选项:after和:first以添加_列和更改_列。()

将执行

ALTER TABLE `foos` ADD `bar` varchar(20) NOT NULL AFTER `baz`
ALTER TABLE `foos` ADD `bar` varchar(20) NOT NULL FIRST

将执行

ALTER TABLE `foos` ADD `bar` varchar(20) NOT NULL AFTER `baz`
ALTER TABLE `foos` ADD `bar` varchar(20) NOT NULL FIRST

对于change_专栏也是如此。

事实上,这不是迁移API的一部分,但是如果您愿意放弃供应商中立性(并且您的DB支持它),那么实现它可能非常简单

如果您使用的是MySQL,这里有一个MysqlAdapter的猴子补丁,它将添加选项:after和:first以添加_列和更改_列。()

将执行

ALTER TABLE `foos` ADD `bar` varchar(20) NOT NULL AFTER `baz`
ALTER TABLE `foos` ADD `bar` varchar(20) NOT NULL FIRST

将执行

ALTER TABLE `foos` ADD `bar` varchar(20) NOT NULL AFTER `baz`
ALTER TABLE `foos` ADD `bar` varchar(20) NOT NULL FIRST

对于change_列也是如此。

你为什么要这样做?@klochner-我不能回答这个问题,但当直接查看我的数据库时,我发现将相关列组合在一起是很有用的,我经常在开始处引用这些列,这样我就不必向右滚动,等等。你为什么要这样做?@klochner-我不能回答这个问题,但是当直接查看我的数据库时,我发现将相关的列组合在一起是很有用的,这些列我经常在靠近开始的地方引用,这样我就不必向右滚动,等等。