Module: PlanMyStuff::UserResolver

Defined in:
lib/plan_my_stuff/user_resolver.rb

Overview

Resolves user objects from user objects or integer IDs, and extracts display names, IDs, and support status using configuration methods.

Class Method Summary collapse

Class Method Details

.display_name(user) ⇒ String

Extracts the display name from a user object.

Parameters:

  • user (Object)

    user object (not an integer ID)

Returns:

  • (String)


30
31
32
# File 'lib/plan_my_stuff/user_resolver.rb', line 30

def display_name(user)
  user.public_send(PlanMyStuff.configuration.display_name_method)
end

.resolve(user) ⇒ Object

Resolves a user param (object or integer ID) into a user object.

Parameters:

  • user (Object, Integer)

    user object or user_id integer

Returns:

  • (Object)

    the resolved user object



14
15
16
17
18
19
20
21
22
# File 'lib/plan_my_stuff/user_resolver.rb', line 14

def resolve(user)
  return if user.nil?

  return user unless user.is_a?(Integer)

  config = PlanMyStuff.configuration
  klass = Object.const_get(config.user_class)
  klass.find_by!(config.user_id_method => user)
end

.support?(user) ⇒ Boolean

Checks whether a user is support staff. Anonymous users (nil) are never support.

Parameters:

  • user (Object, nil)

    user object (not an integer ID)

Returns:

  • (Boolean)


53
54
55
56
57
58
59
60
61
62
63
# File 'lib/plan_my_stuff/user_resolver.rb', line 53

def support?(user)
  return false if user.nil?

  method = PlanMyStuff.configuration.support_method

  if method.is_a?(Proc)
    method.call(user)
  else
    user.public_send(method)
  end
end

.user_id(user) ⇒ Integer?

Extracts the app-side user ID from a user object.

Parameters:

  • user (Object, nil)

    user object (not an integer ID)

Returns:

  • (Integer, nil)


40
41
42
43
44
# File 'lib/plan_my_stuff/user_resolver.rb', line 40

def user_id(user)
  return if user.nil?

  user.public_send(PlanMyStuff.configuration.user_id_method)
end