8

アプリで rails_admin を使用しています。モデルにいくつかのスコープがあります。以下に例を示します。

class User < ActiveRecord::Base

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

end

rails_admin でこれらのスコープにフィルターとしてアクセスすることは可能ですか? アクティブな管理者と同じように。ユーザーセクションのどこかにボタンを追加するようなものです。

ありがとう

4

2 に答える 2

7

私はそれが非常に古い問題であることを知っていますが、誰かが私をこのスレッドにリダイレクトしました. rails_admin を次のように設定することで、これを簡単に実現できます。

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

これにより、[すべて]および[未確認]というラベルの付いたリストの上部に 2 つのタブが挿入され、それぞれのタブでフィルター処理されたレコードが表示されます。これらのタブをクリックすると、カスタム スコープを適用するクエリが起動されます

それが役に立てば幸い。

于 2019-01-09T12:17:13.490 に答える
2

カスタム 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

この新しいアクションは、User モデルのインデックス レベルで表示されます。

于 2014-10-07T11:07:03.037 に答える