Class: Team
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Team
- Includes:
- RequiredUniqueName, RequiredUniqueSlug, Toggleable
- Defined in:
- app/models/team.rb
Constant Summary collapse
- SLUG_PATTERN =
/\A[-_a-z0-9]+\z/
Class Method Summary collapse
Instance Method Summary collapse
- #add_privilege(privilege) ⇒ Object
- #change_priority(delta) ⇒ Object
- #has_privilege?(privilege) ⇒ Boolean
- #remove_privilege(privilege) ⇒ Object
- #users ⇒ Object
Class Method Details
.entity_parameters ⇒ Object
29 30 31 |
# File 'app/models/team.rb', line 29 def self.entity_parameters %i(name slug priority description visible) end |
.page_for_administration ⇒ Object
21 22 23 |
# File 'app/models/team.rb', line 21 def self.page_for_administration ordered_by_priority end |
.page_for_visitors ⇒ Object
25 26 27 |
# File 'app/models/team.rb', line 25 def self.page_for_visitors visible.ordered_by_priority end |
Instance Method Details
#add_privilege(privilege) ⇒ Object
39 40 41 |
# File 'app/models/team.rb', line 39 def add_privilege(privilege) TeamPrivilege.find_or_create_by(privilege: privilege, team: self) end |
#change_priority(delta) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'app/models/team.rb', line 54 def change_priority(delta) new_priority = priority + delta adjacent = Team.find_by(priority: new_priority) if adjacent.is_a?(Team) && (adjacent.id != id) adjacent.update!(priority: priority) end self.update(priority: new_priority) Team.ordered_by_priority.map { |e| [e.id, e.priority] }.to_h end |
#has_privilege?(privilege) ⇒ Boolean
34 35 36 |
# File 'app/models/team.rb', line 34 def has_privilege?(privilege) team_privileges.where(privilege: privilege).exists? end |
#remove_privilege(privilege) ⇒ Object
44 45 46 |
# File 'app/models/team.rb', line 44 def remove_privilege(privilege) team_privileges.where(privilege: privilege).destroy_all end |
#users ⇒ Object
48 49 50 51 |
# File 'app/models/team.rb', line 48 def users ids = UserPrivilege.where(privilege_id: privilege_ids).pluck(:user_id) User.where(id: ids.uniq).order('surname asc, name asc, slug asc') end |