【发布时间】:2013-04-27 13:32:36
【问题描述】:
当我们在开发模式下运行时,我们在 Rails 3.1 中遇到了问题。似乎我们的模型有时会在请求中重新加载,并且在我们模型的类上设置了一个新的 object_id。然后导致 ActiveRecord::AssociationTypeMismatch
ActiveRecord::AssociationTypeMismatch Character(#2194222580) 预期, 得到字符(#2185863000)
如果我们将config.cache_classes = true 转为development.rb,问题似乎就消失了,但这样开发是不现实的,因为我们必须不断地重新启动我们的服务器。
任何人都知道为什么模型可能会在请求中重新加载,或者是否有一种方法可以强制缓存持续整个请求?
【问题讨论】:
-
尝试 active_reload gem,它缓存模型,并在开发模式下完成任何更改时过期。我不知道为什么它会更改运行时间。你可以尝试让我知道上一个问题的帮助
-
我认为它看起来很有效,我们现在在 rails 3.1 上,显然 active_reload 默认包含在 rails 3.2 中。始终如一地重现有点困难,但如果它看起来在几天后消失了,我会更新这个问题。
-
不幸的是,active_reload 不起作用。虽然我们可能没有正确配置它
-
只是想知道,你有没有调用 'load' 或 'require_dependency' 而不是 'require' ?
-
这可能是一个愚蠢的建议,但你有没有在你的模型上打过猴子补丁,或者你的控制器或视图中需要任何文件。根据
ActiveRecord::AssociationTypeMismatch,如果您的类被重新加载,而是在关联意外的对象类型时不应该发生这种情况。您的关联是否有可能被任何东西改变?
标签: ruby-on-rails activerecord