代码之家  ›  专栏  ›  技术社区  ›  Lolo

迁移:将整数改为引用而不丢失行

  •  0
  • Lolo  · 技术社区  · 6 年前

    add_column :users, :fo_creator, :integer
    

    但是,由于fo帴u creator字段是对users表的引用,我需要将其更改为:

    add_reference :user, :fo_creator, index: true
    

    如何在不丢失保存的数据的情况下做到这一点

    1 回复  |  直到 6 年前
        1
  •  0
  •   max Mike Williams    6 年前

    references 宏。

    references :fo_creator

    • 大人物 fo_creator_id

    你的协会不起作用的原因很可能是 belongs_to :fo_creator 假定fkey列命名为 :fo_creator_id foreign_key 选项我会说你重命名列以消除这种不一致性是正确的。

    class ChangeUsersFoCreatorToReference < ActiveRecord::Migration[5.2]
      def change
        rename_column :users, :fo_creator, :fo_creator_id
        change_column :users, :fo_creator_id, :bigint # optional
        add_foreign_key :users, :fo_creators
      end
    end
    

    如果 是自引用(引用用户表),创建fk时需要这样做:

    # from table, to table
    add_foreign_key :users, :users, column: :fo_creator_id