ActiveAdmin按角色过滤用户

时间:2012-12-05 08:05:14

标签: ruby-on-rails devise activeadmin

我希望能够在活动管理员中过滤设备用户,以便我可以显示用户列表,然后按照他们的角色过滤这些用户。

我拥有的是:

class User < ActiveRecord::Base
  has_many :user_permissions
  has_many :roles, :through => :user_permissions

class Role < ActiveRecord::Base
  has_many :user_permissions
  has_many :users, :through => :user_permissions

class UserPermission < ActiveRecord::Base
  belongs_to :user, :dependent => :destroy
  belongs_to :role

然后过滤器是:

ActiveAdmin.register User do
  filter :roles, as: :select, collection: proc { Role.all }

但我得到的是这个错误:

    undefined method `role_ids_eq' for #<MetaSearch::Searches::User:0x0000012a2f7170>

2 个答案:

答案 0 :(得分:0)

我不知道有关过滤器的主动管理工作,但如果您正在讨论过滤器,那么这将有效 -

User.where(:role => 'admin')

注意:以上查询将为所有用户提供admin角色。

如上所述,Rails 3引入了一个新的查询接口,用于在Active Record中执行查找。

  

http://railscasts.com/episodes/202-active-record-queries-in-rails-3

答案 1 :(得分:0)

尝试类似:

ActiveAdmin.register User do
  filter :user_roles, as: :select, collection: proc { Role.all }

如果关系合适可行