gpt4 book ai didi

ruby-on-rails - 如何将引用列更改为多态?

转载 作者:行者123 更新时间:2023-12-04 09:40:18 24 4
gpt4 key购买 nike

我的模型 (Bar) 已经有一个引用列,我们称之为 foo_id现在我需要改变 foo_idfooable_id并使其多态。

我想我有两个选择:

  • 创建新的引用列 fooable这是多态的并从 foo_id 迁移 ID (迁移这些的最佳方法是什么?我可以做 Bar.each { |b| b.fooable_id = b.foo_id }?
  • 重命名 foo_idfooable_id并添加 polymorphicfooable_id .如何将多态添加到现有列?
  • 最佳答案

    1. 更改名称 foo_id fooable_id 通过在迁移中重命名它,例如:

    rename_column :bars, :foo_id, :fooable_id

    2. 并通过添加所需的 为其添加多态性。 foo_type 迁移中的列:
    add_column :bars, :fooable_type, :string

    3. 并在您的模型中:
    class Bar < ActiveRecord::Base
    belongs_to :fooable,
    polymorphic: true
    end

    4. 最后播种您已经关联的类型的类型,例如:
    Bar.update_all(fooable_type: 'Foo')

    阅读 Define polymorphic ActiveRecord model association!

    关于ruby-on-rails - 如何将引用列更改为多态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25563433/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com