1
我有一個基本控制器幹掉了很多我的沼澤標準污染控制器,我的想法是如果我需要做一些非標準的操作,我只會覆蓋每種方法。在紅寶石中覆蓋類方法沒有按預期工作
class MyBaseController < ApplicationController
load_and_authorize_resource
# Common crud actions
end
現在我的孩子控制器之一,我有一個自定義操作(EXPORT_CSV)
class ReportsController < MyBaseController
load_and_authorize_resource :except => :export_csv
def export_csv
# custom auth and other stuff
end
end
現在我再也不能打我EXPORT_CSV行動,而不是我收到拒絕訪問異常。如果我不從我的基礎控制器繼承,一切都很好。
我認爲如下我也許能解決它:
class MyBaseController < ApplicationController
load_and_authorize_resource :except => auth_exceptions
def self.auth_exceptions
[]
end
# Common crud actions
end
,然後覆蓋在我的子類self.auth_exceptions是必要的。
然而,這觸發錯誤「未定義的局部變量或方法`auth_exceptions'的MyBaseController:類」
沒有人有任何建議選擇覆蓋負載和我的孩子控制器授權的資源?
感謝您的任何幫助。
我認爲這完全不是一個好主意:有些控制器無法表示任何資源,因此您必須修補所有內容。 – apneadiving
在這些情況下,我可以直接從ApplicationController繼承? – Chris
是的,取決於你的期望。希望你不要幹DRY的東西,它會導致昂貴的未來變化 – apneadiving