gpt4 book ai didi

ruby-on-rails - has_many 方法在重命名模型和表后不起作用

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

我有模型 A,它是 has_many modelBs和型号 B belongs_to modelA .我试图在不知道自己在做什么的情况下将 modelB 的名称更改为 modelC。在我打电话之前 @modelA.modelBs很好并获得对象列表,但现在我不能调用 @modelA.modelCs .我得到一个 NoMethodError。这些是我为尝试进行转换所做的事情:

我用 sqlite3 迁移重命名了表:

def change
rename :modelBs, :modelCs
end

然后我改变 modelA 使其成为 has_many :modelCs我重命名并编辑了modelB.rb (现在 modelC.rb )并更改了类名,使其成为 class ModelC < ActiveRecord::Base .它仍然belongs_to :modelA

Rails 找不到调用 ModelA 实例的 bars 方法。当我做 @modelA.modelCs 时我得到一个 NoMethodError .我运行了迁移,我重新启动了服务器。我错过了什么?我做了坏事吗?

最佳答案

迁移是否成功运行,您的表是否真的重命名了?我一直为此使用 rename_table:

def change
rename_table :modelBs, :modelCs
end

在您的类(class)中,您还可以告诉 Rails 模型应该与哪个表相关联,只是为了测试它是否正在查看正确的表

class modelC < ActiveRecord::Base
table_name "modelCs"
end

希望对你有帮助

关于ruby-on-rails - has_many 方法在重命名模型和表后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770662/

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