Class: PrivilegeGroup

Inherits:
ApplicationRecord show all
Includes:
Checkable, RequiredUniqueName, RequiredUniqueSlug
Defined in:
app/models/privilege_group.rb

Constant Summary collapse

NAME_LIMIT =
250
SLUG_LIMIT =
50
DESCRIPTION_LIMIT =
350

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.entity_parametersObject



33
34
35
# File 'app/models/privilege_group.rb', line 33

def self.entity_parameters
  %i[name slug description]
end

.ids(slug) ⇒ Object

Privilege ids for group with given slug

Parameters:

  • (Symbol|String)


26
27
28
29
30
31
# File 'app/models/privilege_group.rb', line 26

def self.ids(slug)
  instance = find_by(slug: slug.to_s)
  return [] if instance.nil?

  instance.privileges.map(&:branch_ids).flatten.uniq
end

.page_for_administrationObject



19
20
21
# File 'app/models/privilege_group.rb', line 19

def self.page_for_administration
  ordered_by_name
end

.users(slug) ⇒ Object

Parameters:

  • slug (String)


38
39
40
# File 'app/models/privilege_group.rb', line 38

def self.users(slug)
  User.with_privilege_ids(ids(slug)).ordered_by_screen_name
end

Instance Method Details

#add_privilege(privilege) ⇒ Object

Parameters:



48
49
50
51
52
53
# File 'app/models/privilege_group.rb', line 48

def add_privilege(privilege)
  criteria = { privilege_group: self, privilege: privilege }
  return if PrivilegeGroupPrivilege.exists?(criteria)

  PrivilegeGroupPrivilege.create(criteria)
end

#has_privilege?(privilege) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)


43
44
45
# File 'app/models/privilege_group.rb', line 43

def has_privilege?(privilege)
  privilege_group_privileges.exists?(privilege: privilege)
end

#remove_privilege(privilege) ⇒ Object

Parameters:



56
57
58
59
# File 'app/models/privilege_group.rb', line 56

def remove_privilege(privilege)
  criteria = { privilege_group: self, privilege: privilege }
  PrivilegeGroupPrivilege.where(criteria).destroy_all
end