Class: DirectoryItemSerializer::UserSerializer

Inherits:
UserNameSerializer show all
Includes:
UserPrimaryGroupMixin
Defined in:
app/serializers/directory_item_serializer.rb

Instance Method Summary collapse

Methods included from UserPrimaryGroupMixin

#admin, #flair_bg_color, #flair_color, #flair_group_id, #flair_name, #flair_url, #include_admin?, #include_flair_bg_color?, #include_flair_color?, #include_flair_group_id?, #include_flair_name?, #include_flair_url?, #include_moderator?, #include_primary_group_name?, included, #moderator, #primary_group_name

Methods inherited from BasicUserSerializer

#avatar_template, #categories_with_notification_level, #category_user_notification_levels, #include_name?, #name, #user, #user_is_current_user

Methods included from UserStatusMixin

#include_status?, included, #status

Methods inherited from ApplicationSerializer

expire_cache_fragment!, fragment_cache

Methods inherited from ActiveModel::Serializer

#include!

Instance Method Details

#include_user_fields?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'app/serializers/directory_item_serializer.rb', line 35

def include_user_fields?
  @options[:user_custom_field_map].present?
end

#user_fieldsObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/serializers/directory_item_serializer.rb', line 9

def user_fields
  fields = {}
  user_custom_field_map = @options[:user_custom_field_map] || {}
  searchable_fields = @options[:searchable_fields] || []

  object.user_custom_fields.each do |custom_field|
    user_field_id = user_custom_field_map[custom_field.name]
    next unless user_field_id

    current_value = fields.dig(user_field_id, :value)

    current_value = Array(current_value) if current_value

    new_value = current_value ? current_value << custom_field.value : custom_field.value

    is_searchable = searchable_fields.any? { |field| field.id == user_field_id }

    fields[user_field_id] = {
      value: new_value.is_a?(Array) ? new_value : [new_value],
      searchable: is_searchable,
    }
  end

  fields
end