作用域作为 rails_admin 中的过滤器 [英] Scopes as filters in rails_admin

查看:42
本文介绍了作用域作为 rails_admin 中的过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的应用中使用 rails_admin.我的模型上有一些范围,以下是一个示例:

I am using rails_admin in my app. I have some scopes on my models, following is an example:

class User < ActiveRecord::Base

  scope :unconfirmed, where('confirmed_at IS NULL')

end

rails_admin 是否可以将这些范围作为过滤器访问?就像您可以在活动管理员中一样.就像在用户部分的某处添加一个按钮一样.

Is it possible in rails_admin to get access to those scope as a filter? Like you can in active admin. Like adding a button somewhere on in the users section.

谢谢

推荐答案

我通过添加自定义 rails_admin 操作成功地做到了这一点.

I've managed to do this successfully by adding a custom rails_admin action.

更多详情:https://github.com/sferik/rails_admin/wiki/Custom-动作

例如:

# in lib/rails_admin/unconfirmed.rb

require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'

module RailsAdminUnconfirmed
end

module RailsAdmin
  module Config
    module Actions

      class Unconfirmed < RailsAdmin::Config::Actions::Base
        RailsAdmin::Config::Actions.register(self)

        register_instance_option :controller do
          Proc.new do
            @objects = User.unconfirmed
            render "index"
          end
        end

        register_instance_option :collection do
          true
        end
      end
    end
  end
end

关键在于它是一个收集"操作.然后将其添加到 rails_admin 设置中:

The key is that it's a 'collection' action. Then you add it to the rails_admin setup:

# in config/initializers/rails_admin.rb
# require File.join(Rails.root, "lib", "rails_admin", "unconfirmed")

RailsAdmin.config do |config|
  config.actions do
    # root actions
    dashboard
    # collection actions
    index
    unconfirmed do
      only 'User'
    end
  end
  # snip!
end

此新操作将出现在 User 模型的索引级别.

This new action will appear at the index level of the User model.

这篇关于作用域作为 rails_admin 中的过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆