2013-08-23 30 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