gpt4 book ai didi

ruby - 更改 ActiveRecord 中对象的类

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:12 24 4
gpt4 key购买 nike

假设我有一个 FireNinja < Ninja我的数据库中的对象,使用单表继承存储。后来才知道他真的是WaterNinja < Ninja .将他更改为不同的子类的最干净的方法是什么?更好的是,我很想创建一个新的 WaterNinja对象并替换旧的 FireNinja在数据库中,保留 ID。

编辑我知道如何创建新的 WaterNinja来 self 现有 FireNinja 的对象,我也知道我可以删除旧的并保存新的。我想做的是改变 现有项目的类别。我是通过创建一个新对象并执行一些 ActiveRecord 魔法来替换行,还是通过对对象本身做一些疯狂的事情,或者甚至通过删除它并使用相同的 ID 重新插入来做到这一点,这是问题的一部分。

最佳答案

您可以通过以下方式让您的 FireNinja 充当 WaterNinja

@ninja.becomes(WaterNinja)

如果您想永久更改类,只需覆盖类型属性即可。

@ninja.type = "WaterNinja"
@ninja.save!

关于ruby - 更改 ActiveRecord 中对象的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3215107/

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