Class: PrivilegeGroup
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- PrivilegeGroup
- 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
- .entity_parameters ⇒ Object
-
.ids(slug) ⇒ Object
Privilege ids for group with given slug.
- .page_for_administration ⇒ Object
- .users(slug) ⇒ Object
Instance Method Summary collapse
- #add_privilege(privilege) ⇒ Object
- #has_privilege?(privilege) ⇒ Boolean
- #remove_privilege(privilege) ⇒ Object
Class Method Details
.entity_parameters ⇒ Object
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
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_administration ⇒ Object
19 20 21 |
# File 'app/models/privilege_group.rb', line 19 def self.page_for_administration ordered_by_name end |
.users(slug) ⇒ Object
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
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
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
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 |