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 =
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 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
Constants included from Models::Schedulable
Models::Schedulable::SIMPLE_FORM_OPTIONS
Instance Attribute Summary collapse
-
#description ⇒ Object
readonly
Validates name, description.
-
#name ⇒ Object
readonly
Validates name, description.
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>
Activity types.
- #topics ⇒ ActiveRecord::Relation<Topic>
Class Method Summary collapse
-
.get_available_online_customer_roles_for_role(role) ⇒ Object
Get available online customer roles for role.
-
.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) ⇒ Array<Array>
[label, id]pairs for select dropdowns. -
.workgroups ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are workgroups.
Instance Method Summary collapse
-
#is_manager? ⇒ Boolean
Get available online customer roles for role.
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::Schedulable
Methods included from Models::AfterCommittable
Methods included from Models::EventPublishable
Instance Attribute Details
#description ⇒ Object (readonly)
Validates name, description.
Validations:
52 |
# File 'app/models/role.rb', line 52 validates :name, :description, presence: true |
#name ⇒ Object (readonly)
Validates name, description.
Validations:
52 |
# File 'app/models/role.rb', line 52 validates :name, :description, presence: true |
Class Method Details
.get_available_online_customer_roles_for_role(role) ⇒ Object
Get available online customer roles for role.
78 79 80 81 82 83 84 85 86 87 |
# File 'app/models/role.rb', line 78 def self.get_available_online_customer_roles_for_role(role) available_roles_names = if role && (role.name == 'online_customer_administrator') Role::ONLINE_CUSTOMER_ROLE_NAMES elsif role && (role.name == 'online_customer_sales_supervisor') ['online_customer_sales_representative'] else [] 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
58 |
# File 'app/models/role.rb', line 58 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
56 |
# File 'app/models/role.rb', line 56 scope :managerial_roles, -> { where.not(roles: { parent_id: nil }) } |
.online_customer_roles ⇒ ActiveRecord::Relation<Role>
A relation of Roles that are online customer roles. Active Record Scope
59 |
# File 'app/models/role.rb', line 59 scope :online_customer_roles, -> { where(name: ONLINE_CUSTOMER_ROLE_NAMES) } |
.select_options(*args) ⇒ Array<Array>
Returns [label, id] pairs for select dropdowns.
62 63 64 65 66 67 68 |
# File 'app/models/role.rb', line 62 def self.(*args) args = args.compact.uniq if args.present? roles = Role.order(:name) # Is manager?. roles = roles.where.not(roles: { id: 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
55 |
# File 'app/models/role.rb', line 55 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
41 |
# File 'app/models/role.rb', line 41 has_and_belongs_to_many :accounts, inverse_of: :roles |
#activity_types ⇒ ActiveRecord::Relation<ActivityType>
Activity types.
46 |
# File 'app/models/role.rb', line 46 has_and_belongs_to_many :activity_types |
#is_manager? ⇒ Boolean
Get available online customer roles for role.
72 73 74 |
# File 'app/models/role.rb', line 72 def is_manager? !(name =~ /_manager$/).nil? end |
#topics ⇒ ActiveRecord::Relation<Topic>
49 |
# File 'app/models/role.rb', line 49 has_and_belongs_to_many :topics |