2013-01-04 74 views
4

我正在實現一個偉大的插件,我發現根據用戶行爲向用戶授予積分/徽章/等級。它被稱爲優點,可以在這裏找到:https://github.com/tute/meritRoR未定義的方法`attr_accessible'在任何代碼編輯後

我有兩個模型:「後」和「標籤」。關聯有:帖子有很多標籤,標籤屬於帖子。

我在給用戶創建「發佈」時授予積分。我將插件配置爲在帖子控制器的「創建」操作被調用時授予積分。

問題:

當我啓動服務器,我通過我的流程來創建一個新的職位有任何關聯的標籤。這工作完美。它將完美工作,直到我以任何方式編輯我的代碼(在控制器或模型中)。編輯後,試圖創建一個新的職位時,我會得到這個錯誤:

undefined method `attr_accessible' for Merit::Action:Class 

這似乎並不重要我做出什麼樣的編輯,只要我改變文件的基本內容(這包括簡單地添加一個調試「puts」語句)。此時,我無法再創建帖子,因爲每次嘗試創建帖子都會導致相同的錯誤。然後,一旦我重新啓動WEBrick,它將再次工作(直到我再次編輯代碼)。

這裏發生了什麼?如何編輯我的代碼的簡單行爲會導致attr_accessible在Merit插件中突然變爲undefined,直到我重新啓動服務器爲止?

+0

您使用的是rails_admin嗎?我有同樣的問題與rails_admin –

+0

不,我沒有使用rails_admin。你是如何解決你的? – joncslee

+0

我的問題是訪問/管理會帶來這個錯誤。我在我的rails_admin初始化器中添加了config.excluded_models <<「Merit :: Action」,但這不適用於你。 –

回答

0

這似乎是一個紅寶石類重新加載問題。

我認爲你的插件沒有與你改變的文件一起重新加載,所以gem的行爲不會被重新注入到新代碼中。當您重新啓動rails服務器時,應用程序的代碼和gem的代碼是同步的,gem的行爲可以注入應用程序的代碼中。

它有道理嗎?

相關問題