2013-10-23 52 views
7

我在我的應用程序中使用了rails_admin。我有我的一些車型範圍,下面是一個例子:在rails_admin中作爲過濾器的作用域

class User < ActiveRecord::Base 

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

end 

是否有可能在rails_admin獲得訪問這些範圍作爲一個過濾器?就像你可以在活躍的管理員。就像在用戶部分添加一個按鈕一樣。

感謝

+5

你想要做什麼?這正是你如何做到的 – MZaragoza

回答

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 

這個新的行動將出現在用戶模式的指數水平。