has_many_polymorphs标记 - 适用于开发机器,而不是生产!

时间:2008-11-19 17:24:08

标签: ruby-on-rails has-many-polymorphs

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

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

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

我的Google-fu试图找到答案让我失败了,所以如果有人知道什么是错的,我们将不胜感激!

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

4 个答案:

答案 0 :(得分:0)

上限部署:迁移

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

那么,您是否可以安装插件,而不是标记扩展文件?

答案 3 :(得分: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

就是这样。我确信这是一个优雅和正确的解决方案,但这是有效的。怪异。

我希望这可以帮助那些人。