Class: Role
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Role
- Includes:
- Models::Lineage
- Defined in:
- app/models/role.rb
Overview
== Schema Information
Table name: roles
Database name: primary
id :integer not null, primary key
description :string(255) default(" "), not null
is_workgroup :boolean
name :string(255)
parent_id :integer
Indexes
index_roles_on_parent_id (parent_id)
Foreign Keys
roles_parent_id_fk (parent_id => roles.id) ON DELETE => nullify
Constant Summary collapse
- ONLINE_CUSTOMER_ROLE_NAMES =
%w[online_customer_administrator online_customer_sales_supervisor online_customer_sales_representative online_customer_accounting_supervisor].freeze
- ONLINE_CUSTOMER_ROLE_DESCRIPTIONS =
{ 'online_customer_administrator' => ['super user', 'can create users', 'can update main account details', 'can edit all user details', 'can change roles/permissions for any user', "can update all user's orders, projects, quotes, rooms, and services"], 'online_customer_accounting_supervisor' => ['can update main account details', 'can see all user details', "can see any user's orders, projects, quotes, rooms, and services"], 'online_customer_sales_supervisor' => ['can create sales rep users', 'can edit all sales rep user details', "can update any sales rep user's orders, projects, quotes, rooms, and services"], 'online_customer_sales_representative' => ['default user role', 'can update their own details', 'can update their own orders, projects, quotes, rooms, and services'] }.freeze
Has and belongs to many collapse
-
#accounts ⇒ ActiveRecord::Relation<Account>
has_many :accounts_roles, dependent: :destroy has_many :accounts, through: :accounts_roles.
- #activity_types ⇒ ActiveRecord::Relation<ActivityType>
- #topics ⇒ ActiveRecord::Relation<Topic>
Class Method Summary collapse
- .get_available_online_customer_roles_for_role(role) ⇒ Object
-
.managed_by_roles ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are managed by roles.
-
.managerial_roles ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are managerial roles.
-
.online_customer_roles ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are online customer roles.
- .select_options(*args) ⇒ Object
-
.workgroups ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are workgroups.
Instance Method Summary collapse
Methods included from Models::Lineage
#ancestors, #ancestors_ids, #children_and_roots, #descendants, #descendants_ids, #ensure_non_recursive_lineage, #family_members, #generate_full_name, #generate_full_name_array, #lineage, #lineage_array, #lineage_simple, #root, #root_id, #self_ancestors_and_descendants, #self_ancestors_and_descendants_ids, #self_and_ancestors, #self_and_ancestors_ids, #self_and_children, #self_and_descendants, #self_and_descendants_ids, #self_and_siblings, #self_and_siblings_ids, #siblings, #siblings_ids
Methods inherited from ApplicationRecord
ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation
Methods included from Models::EventPublishable
Class Method Details
.get_available_online_customer_roles_for_role(role) ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# File 'app/models/role.rb', line 61 def self.get_available_online_customer_roles_for_role(role) if role && (role.name == 'online_customer_administrator') available_roles_names = Role::ONLINE_CUSTOMER_ROLE_NAMES elsif role && (role.name == 'online_customer_sales_supervisor') available_roles_names = ['online_customer_sales_representative'] else available_roles_names = [] end Role.where(name: available_roles_names) end |
.managed_by_roles ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are managed by roles. Active Record Scope
47 |
# File 'app/models/role.rb', line 47 scope :managed_by_roles, ->(role_ids) { descendants_only(role_ids) } |
.managerial_roles ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are managerial roles. Active Record Scope
46 |
# File 'app/models/role.rb', line 46 scope :managerial_roles, -> { where('roles.parent_id IS NOT NULL') } |
.online_customer_roles ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are online customer roles. Active Record Scope
48 |
# File 'app/models/role.rb', line 48 scope :online_customer_roles, -> { where(name: ONLINE_CUSTOMER_ROLE_NAMES) } |
.select_options(*args) ⇒ Object
50 51 52 53 54 55 |
# File 'app/models/role.rb', line 50 def self.(*args) args = args.compact.uniq if args.present? roles = Role.all.order('name') roles = roles.where('roles.id NOT IN (?)', args) if args.present? roles.map { |r| [r.name.humanize, r.id] }.sort_by(&:first) end |
.workgroups ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are workgroups. Active Record Scope
45 |
# File 'app/models/role.rb', line 45 scope :workgroups, -> { where(is_workgroup: true) } |
Instance Method Details
#accounts ⇒ ActiveRecord::Relation<Account>
has_many :accounts_roles, dependent: :destroy
has_many :accounts, through: :accounts_roles
37 |
# File 'app/models/role.rb', line 37 has_and_belongs_to_many :accounts, inverse_of: :roles |
#activity_types ⇒ ActiveRecord::Relation<ActivityType>
39 |
# File 'app/models/role.rb', line 39 has_and_belongs_to_many :activity_types |
#is_manager? ⇒ Boolean
57 58 59 |
# File 'app/models/role.rb', line 57 def is_manager? !(name =~ /_manager$/).nil? end |
#topics ⇒ ActiveRecord::Relation<Topic>
40 |
# File 'app/models/role.rb', line 40 has_and_belongs_to_many :topics |