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