2014-12-01 43 views
4

我已經在我的Rails應用程序中安裝了gem Pundit,並仔細地遵循了README中的說明。未定義的方法'授權'與權威

然而,當我在我的任何控制器的使用授權,我得到錯誤信息「未定義的方法‘授權’的。

此外,當我試圖用‘視圖中的政策’,我得到的錯誤「未定義的方法‘政策’」。

就好像權威人士都根本沒裝!

我在我的應用程序控制器包括權威人士。

我有一個ApplicationPolicy文件,所有的我的政策,然後是每種類型的政策文件從應用程序策略繼承的記錄。

出於某種原因,我無法將任何代碼粘貼到此問題中,所以我希望我已經包含足夠的信息!

我會很感激任何想法。

+3

Pundit是「只是普通的Ruby」,因此將它包含在您的應用程序控制器中應該是您所需要的一切。你確定你拼寫正確嗎? 「包含Pundit」是ApplicationController聲明下的第一行。另外,你的控制器是否繼承自'ApplicationController'? – nikkon226 2014-12-02 00:29:52

+0

謝謝!這些想法很有幫助。 – 2014-12-02 02:20:25

+0

偶然,您是否使用Clearance進行身份驗證?如果是這樣,Devise會使用一個名爲'authorize'的方法與Pundit衝突。在我的應用程序控制器中,我有這個'alias_method:require_login,:authorize',下一行是我的'include Pundit'。此外,請確保您正在對模型實例調用授權(即'authorize @ my_var') – 2015-01-05 19:49:06

回答

2

我最近使用了評論家,它的工作就像一個魅力。 你的錯誤消息讓我推斷你還沒有運行安裝 rails g pundit:安裝或您的策略文件不在正確的目錄中。

或者如果他們那麼只要重新啓動服務器應該解決這個問題。希望。

0

您需要爲評論者:安裝生成器爲您的應用程序生成默認策略文件。

rails g pundit:install 
    create app/policies/application_policy.rb