module Royce::Methods

Public Class Methods

included(includer) click to toggle source

Called when module included in a class includer == User includer.class == Class

# File lib/royce/methods.rb, line 7
def self.included includer
  # With instance eval, we can add instance methods
  # Add instance methods like user? admin?
  includer.instance_eval do

    # Loop through all available role names
    # and add a name? method that queries the has_role? method
    available_role_names.each do |name|
      define_method("#{name}?") do
        has_role? name
      end

      define_method("#{name}!") do
        add_role name
      end
    end

  end
end

Public Instance Methods

add_role(name) click to toggle source

These methods are included in all User instances

# File lib/royce/methods.rb, line 30
def add_role name
  if allowed_role? name
    return if has_role? name
    role = Role.find_or_create_by(name: name.to_s)
    roles << role
  end
end
allowed_role?(name) click to toggle source
# File lib/royce/methods.rb, line 49
def allowed_role? name
  self.class.available_role_names.include? name.to_s
end
has_role?(name) click to toggle source
# File lib/royce/methods.rb, line 45
def has_role? name
  role_list.include? name.to_s
end
remove_role(name) click to toggle source
# File lib/royce/methods.rb, line 38
def remove_role name
  if allowed_role? name
    role = Role.find_by(name: name.to_s)
    roles.delete role
  end
end
role_list() click to toggle source
# File lib/royce/methods.rb, line 53
def role_list
  roles.pluck(:name)
end