2008-11-19 138 views
0

我有一个奇怪的问题,在这里标注工作正常,我的机器上,但是当我部署到生产服务器,我在日志中出现此错误:has_many_polymorphs标记 - 适用于开发机器,不适用于生产!

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

有一个条目指出has_many_polymorphs的production.log文件已加载,所以它不像插件在生产机器上不可用。

我的谷歌福已经失败了,我试图找到答案,所以如果有人知道什么是错的,它将不胜感激!

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

回答

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 

就是这样。我确定这有一个优雅和适当的解决方案,但这是有效的。奇怪的。

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

0

帽部署:迁移

+0

谢谢,但它没有帮助。另外,生产和开发都使用相同的数据库,所以如果它与数据相关,它应该在两者上都失败或者在两者上都工作。 – 2008-11-20 20:34:26

0

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

+0

人不是子类,标记表中没有任何内容。我应该提到,我在两种情况下都使用同一个数据库,所以我不认为它与数据有关,这是导致我疯狂的部分原因。 – 2008-11-20 20:32:08

0

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

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

+0

谢谢,但我们确实包含了标记扩展文件!这是一个奇怪的,但它从那时起就被解决了。 – 2009-01-04 14:29:11

相关问题