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 Schedulable
Schedulable::SIMPLE_FORM_OPTIONS
Instance Attribute Summary collapse
- #description ⇒ Object readonly
- #name ⇒ Object readonly
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 Schedulable
Methods included from Models::AfterCommittable
Methods included from Models::EventPublishable
Instance Attribute Details
#description ⇒ Object (readonly)
46 |
# File 'app/models/role.rb', line 46 validates :name, :description, presence: true |
#name ⇒ Object (readonly)
46 |
# File 'app/models/role.rb', line 46 validates :name, :description, presence: true |
Class Method Details
.get_available_online_customer_roles_for_role(role) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'app/models/role.rb', line 65 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
51 |
# File 'app/models/role.rb', line 51 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
50 |
# File 'app/models/role.rb', line 50 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
52 |
# File 'app/models/role.rb', line 52 scope :online_customer_roles, -> { where(name: ONLINE_CUSTOMER_ROLE_NAMES) } |
.select_options(*args) ⇒ Object
54 55 56 57 58 59 |
# File 'app/models/role.rb', line 54 def self.(*args) args = args.compact.uniq if args.present? roles = Role.order(:name) 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
49 |
# File 'app/models/role.rb', line 49 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>
43 |
# File 'app/models/role.rb', line 43 has_and_belongs_to_many :activity_types |
#is_manager? ⇒ Boolean
61 62 63 |
# File 'app/models/role.rb', line 61 def is_manager? !(name =~ /_manager$/).nil? end |
#topics ⇒ ActiveRecord::Relation<Topic>
44 |
# File 'app/models/role.rb', line 44 has_and_belongs_to_many :topics |