0

我遇到了一个奇怪的问题,在我的开发机器上标记工作正常,但是当我部署到生产服务器时,我在日志中收到此错误:

ActionView::TemplateError (undefined method `tags' for #<Person:0x98bb9d4>) on line...  

production.log 文件中有一个条目指出 has_many_polymorphs 已加载,因此插件在生产机器上不可用。

我的 Google-fu 让我无法找到答案,所以如果有人知道可能出了什么问题,将不胜感激!

编辑:我应该提到在生产和开发中我使用的是同一个数据库。我下载了生产版本,并在开发机器上使用它,它工作正常。

4

4 回答 4

0

上限部署:迁移

于 2008-11-19T17:54:11.573 回答
0

我见过与此类似的问题,其中多态类型字段未正确填写,或者在添加多态类型标记之前存在一些现有数据。人是子类吗?_type 字段是否包含多态表上的任何空值?

于 2008-11-19T22:34:24.063 回答
0

在这里只是在黑暗中刺伤,但 has_many_polymorphs 并没有为您的模型本身添加标记功能。相反,您使用生成器来创建进入 lib/tagging_extensions.rb 的标记扩展模块。模块文件具有添加标记功能的辅助方法,这些方法建立在 has_many_polymorphs 基本功能之上。

那么,您是否有可能安装了插件,但没有安装标记扩展文件?

于 2008-12-03T10:49:41.660 回答
0

我花了一些时间和一位顾问一起追踪这个问题,最终我们发现由于未知的原因,标记的东西没有被加载。

通过在 environment.rb 的末尾添加一行代码,只有三个字母,就解决了。我评论了它,以便我们永远不会忘记 wtf 正在发生的事情:

# Magic begins here.
# We need to force Rails to load the Tag record, or 
# has_many_polymorphs doesn't work properly. I don't know
# if there's a better fix, but this one seems reasonable. :-/
Tag

就是这样。我确信对此有一个优雅而适当的解决方案,但这很有效。奇怪的。

我希望这可以帮助那里的人。

于 2009-01-04T14:26:49.707 回答