2008-11-19 75 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

相關問題