在应用初始化程序中访问Activeadmin资源集合

时间:2019-03-07 15:46:48

标签: ruby-on-rails initialization activeadmin

我在Rails初始化程序文件中包含以下代码,以针对我所有的管理资源禁用特定的过滤器:

ActiveAdmin.application.namespaces[:admin].resources.values.each do |resource|
  resource.remove_filter :some_common_filter if resource.is_a? ActiveAdmin::Resource
end

但是在程序执行的这一刻,资源的集合仍然是空的(resources.count == 0),因此没有完成对#remove_filter的调用。

ActiveAdmin.setup do | config | 块中发生了同样的情况,并使用 config 代替了 ActiveAdmin.application

稍后在控制台上,我可以访问所有管理资源,但不能在初始化程序中访问。

1 个答案:

答案 0 :(得分:0)

只需使用after_load钩子找到解决方案

ActiveAdmin.after_load do |app|
  app.namespaces.each do |name, _namespace|
    name.resources.values.each do |resource|
      resource.remove_filter :my_common_filter if resource.is_a?(ActiveAdmin::Resource) && resource.filters.include?(:my_common_filter)
    end
  end

结束

相关问题