gpt4 book ai didi

ruby-on-rails - Rails 模型在请求中重新加载导致 AssociationTypeMismatch

转载 作者:行者123 更新时间:2023-12-04 12:55:51 27 4
gpt4 key购买 nike

当我们在开发模式下运行时,我们在 Rails 3.1 中遇到了一个问题。似乎我们的模型有时会在请求中重新加载,并且在我们模型的类上设置了一个新的 object_id。然后导致 ActiveRecord::AssociationTypeMismatch

ActiveRecord::AssociationTypeMismatch Character(#2194222580) expected, got Character(#2185863000)



如果我们转 config.cache_classes = truedevelopment.rb问题似乎消失了,但这样开发是不现实的,因为我们必须不断地重新启动我们的服务器。

任何人都知道为什么模型可能会在请求中重新加载,或者是否有一种方法可以强制缓存持续整个请求?

最佳答案

使用 config.cache_classes = false,对模型的任何更改都会导致重新加载。这包括定义/重新定义在模型中定义/已知的常量。

我们在使用 rspec 和 ActsAsFu 时遇到了这个问题。在测试期间重新定义 Fu 类导致相关(甚至间接相关)类重新加载,我们在相关对象上得到 ActiveRecord::AssociationTypeMismatch 错误。我们认为这是我们的原因,因为我们的测试可以单独运行良好,但在其他测试之后运行时却失败了。我们的解决方案是只为每个配置创建单独命名的 Fu 类,并避免在测试期间重新分配类名。

所以我的建议是确保您没有重新定义 Character 类已知的任何常量(或 Character 类已知的类等)。

关于ruby-on-rails - Rails 模型在请求中重新加载导致 AssociationTypeMismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082802/

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