2013-08-23 28 views
0

我有一個名稱空間admin。我想將before_filter僅應用於此名稱空間(不是默認的名稱空間,即superuser)。僅在命名空間篩選前的活動管理員

我可以在active_admin.rb

ns.before_filter :is_subscribed? 

添加以下代碼但隨後,superuser得到濾清器過。

我嘗試添加了before_filter我的名字空間裏面的配置:

config.namespace :admin do |ns| 
    ... 
    ns.before_filter :is_subscribed? 
end 

但Rails的拋出一個錯誤:

undefined method `before_filter' for #<ActiveAdmin::Namespace:0x007fa2e0f75f00> 

回答

1

你可以在命名空間與before_filter,來添加一個控制器,然後在所有控制器從該控制器繼承?

即, AdminBaseController。

+0

聽起來像一個明智的解決辦法。但是,這意味着我將不得不爲所有資源添加繼承...我更願意在名稱空間配置中添加一個過濾器。爲什麼它不工作? –

+0

我不認爲這是可能的。更有經驗的人可以證實我的猜測。 – user2708672

0

我會在管理目錄中的文件active_admin_extension.rb有這樣的內容:

module ActiveAdmin 
    class BaseController 
    before_filter :make_sure_something 

    private 
    def make_sure_something 
     if active_admin_namespace.name == :my_desired_namespace && !something_there 
     #do something here 
     end 
    end 
    end 
end