微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 在Rails迁移中,是否可以指示新添加的列应该在表中的现有列之前还是之后?

假设我在Rails迁移中创建了一个表,指定省略ID列:
create_table :categories_posts,:id => false do |t|
  t.column :category_id,:integer,:null => false
  t.column :post_id,:null => false
end

后来我决定将ID列添加为主键,因此我创建了一个新的迁移:

class ChangeCategoriesToRichJoin < ActiveRecord::Migration
  def self.up
    add_column :categories_posts,:id,:primary_key
  end

  def self.down
    remove_column :categories_posts,:id
  end
end

但是当我迁移后查看表格时,它看起来像这样:

category_id
post_id
id

id列位于表中的最后一个位置,而通常id列是第一个.

有没有办法更改ChangeCategoriesToRichJoin迁移以坚持在表中的category_id列之前创建的id列?

或者我是否需要删除表并在“创建表”定义中添加列?

解决方法

我自己无法按顺序放置列,但是使用Rails可以回滚,更改旧的迁移文件以按所需顺序添加新列,然后重新迁移旧迁移,包括新字段.它并不完全理想,但能够轻松迁移和回滚,如果您的OCD足以要求列顺序,它可以工作. :P

我不是专家,但我已经阅读了很多Rails文档(以及最近的文档),并且无法回想起为此找到解决方案.

原文地址:https://www.jb51.cc/ruby/264461.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐