作用域作为rails_admin中的筛选器



我在我的应用程序中使用了rails_admin。 我的模型上有一些范围,下面是一个示例:

class User < ActiveRecord::Base
  scope :unconfirmed, where('confirmed_at IS NULL')
end

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

谢谢

我知道

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

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

这将在标记为"全部""未确认"的列表顶部插入两个选项卡,并在各自的选项卡中过滤记录。单击这些选项卡将触发应用自定义范围的查询

希望对您有所帮助。

我通过添加自定义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

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

最新更新