范围作为rails_admin中的过滤器

时间:2013-10-23 14:22:18

标签: ruby-on-rails ruby scope rails-admin

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

class User < ActiveRecord::Base

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

end

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

由于

2 个答案:

答案 0 :(得分:3)

我已成功通过添加自定义rails_admin操作来成功完成此操作。

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

例如:

# 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设置:

# 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

此新操作将显示在用户模型的索引级别。

答案 1 :(得分:0)

我知道这是一个非常老的问题,但是有人将我重定向到该线程。 您可以通过如下配置rails_admin轻松实现此目的

# /config/initializers/rails_admin.rb
config.model User do
    list do
        scopes [nil, :unconfirmed]
    end
end

这将在标签为全部未确认的列表顶部插入两个标签,并在相应的标签中过滤记录。点击这些标签会触发应用您自定义范围的查询

希望有帮助。