Class: Decidim::Admin::UserFilter

Inherits:
Query
  • Object
show all
Defined in:
decidim-admin/app/queries/decidim/admin/user_filter.rb

Overview

A class used to filter users by whitelisted scope or searches on their name

Constant Summary collapse

WHITELISTED_STATE_SCOPES =
%w(
  officialized
  not_officialized
  managed
  not_managed
).freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Query

#cached_query, #each, #eager?, #exists?, merge, #none?, #relation?, #|

Constructor Details

#initialize(scope, name_query = nil, state = nil) ⇒ UserFilter

Initializes the class.

scope - the ActiveRecord::Relation of users to be filtered name_query - query to filter user group names state - users state, must be defined as a scope in the user model



29
30
31
32
33
# File 'decidim-admin/app/queries/decidim/admin/user_filter.rb', line 29

def initialize(scope, name_query = nil, state = nil)
  @scope = scope
  @name_query = name_query
  @state = state
end

Class Method Details

.for(scope, name_query = nil, state = nil) ⇒ Object

Syntactic sugar to initialize the class and return the queried objects.

scope - the ActiveRecord::Relation of users to be filtered name_query - query to filter user group names state - evaluation state to be used as a filter



20
21
22
# File 'decidim-admin/app/queries/decidim/admin/user_filter.rb', line 20

def self.for(scope, name_query = nil, state = nil)
  new(scope, name_query, state).query
end

Instance Method Details

#queryObject

List the User groups by the diferents filters.



36
37
38
39
40
# File 'decidim-admin/app/queries/decidim/admin/user_filter.rb', line 36

def query
  users = scope
  users = filter_by_search(users)
  filter_by_state(users)
end