module Royce::Macros::ClassMethods

Attributes

available_role_names[R]

Public Instance Methods

royce_roles(roles) click to toggle source

How a class opts in to roller Pass an array of roles

# File lib/royce/macros.rb, line 9
def royce_roles(roles)
  role_strings = roles.map(&:to_s)

  confirm_roles_exist role_strings

  # Work in singleton class
  # Add a read-only class variable to all classes that call `royce_roles`
  class << self
    attr_reader :available_role_names
  end
  @available_role_names = role_strings

  include Royce::ClassMethods
  include Royce::Methods
end

Private Instance Methods

confirm_roles_exist(role_names) click to toggle source

Pre-create Role objects when file is loaded

# File lib/royce/macros.rb, line 29
def confirm_roles_exist(role_names)
  # Wait until the actual tables exist
  return unless ActiveRecord::Base.connection.table_exists? 'royce_role'
  role_names.each do |name|
    Role.find_or_create_by(name: name)
  end
end