class SwitchUser::UserSet

Attributes

base_scope[R]
identifier[R]
label[R]
scope[R]
user_class[R]

Public Class Methods

init_from_config() click to toggle source
# File lib/switch_user/user_set.rb, line 5
def self.init_from_config
  SwitchUser.available_users.map do |scope, base_scope|
    identifier = SwitchUser.available_users_identifiers[scope]
    label = SwitchUser.available_users_names[scope]
    new(scope, identifier, label, base_scope)
  end
end
new(scope, identifier, label, base_scope) click to toggle source
# File lib/switch_user/user_set.rb, line 21
def initialize(scope, identifier, label, base_scope)
  @scope = scope
  @user_class = normalize_class(scope)
  @identifier = identifier
  @label = label
  @base_scope = normalize_scope(base_scope)
end
users() click to toggle source
# File lib/switch_user/user_set.rb, line 13
def self.users
  init_from_config.flat_map do |user_set|
    user_set.users.map { |user| Record.build(user, user_set) }
  end
end

Public Instance Methods

[](id)
Alias for: find_user
find_user(id) click to toggle source
# File lib/switch_user/user_set.rb, line 29
def find_user(id)
  Record.build(users.where(id: id).first, self)
end
Also aliased as: []
users() click to toggle source
# File lib/switch_user/user_set.rb, line 35
def users
  base_scope
end

Private Instance Methods

normalize_class(klass) click to toggle source
# File lib/switch_user/user_set.rb, line 41
def normalize_class(klass)
  if klass.is_a?(Class)
    klass
  else
    klass.to_s.classify.constantize
  end
end
normalize_scope(scope) click to toggle source
# File lib/switch_user/user_set.rb, line 49
def normalize_scope(scope)
  if scope.respond_to?(:call)
    scoped = scope.call
    if scoped.respond_to?(:scoped)
      scoped
    else
      user_class.respond_to?(:scoped) ? user_class.scoped : user_class.all
    end
  else
    user_class.respond_to?(:scoped) ? user_class.scoped : user_class.all
  end
end