module Royce::ClassMethods
Public Class Methods
available_roles()
click to toggle source
Add class method to return all possible roles
# File lib/royce/class_methods.rb, line 11 def self.available_roles self.available_role_names.map{ |name| Role.find_or_create_by(name: name) } end
included(includer)
click to toggle source
# File lib/royce/class_methods.rb, line 3 def self.included includer includer.class_eval do # Add relations to including class has_many :role_connectors, as: :roleable, class_name: 'Royce::Connector' has_many :roles, through: :role_connectors, class_name: 'Royce::Role' # Add class method to return all possible roles def self.available_roles self.available_role_names.map{ |name| Role.find_or_create_by(name: name) } end # Add scopes to including class # User.admins # User.editors available_role_names.each do |role_name| includer_class_name = includer.model_name.to_s.underscore.pluralize scope role_name.pluralize, -> { Role.find_by(name: role_name).send includer_class_name.to_sym } end end # Be able to search some_role.users and get back instnaces of User # Royce::Role.find_by(name, 'admin').users Royce::Role.class_eval do has_many includer.model_name.to_s.underscore.pluralize.to_sym, through: :connectors, source: :roleable, source_type: includer.model_name.to_s end end