Добавление к сериализатору пользователя не работает для текущего объекта пользователя

Я добавил пользовательское поле в модель пользователя, но при попытке получить его в объекте текущего пользователя поле не отображается. Как можно получить пользовательское поле?

Я пробовал следующий код:

require_dependency 'user_serializer'
class ::UserSerializer
  attributes :custom_thumbnail_style_dropdown
  def custom_thumbnail_style_dropdown
    object.custom_fields[custom_thumbnail_style_dropdown]
  end
end

Также пробовал использовать object.custom_thumbnail_style_dropdown в определении, но это не сработало.

Пробовал и такой вариант:

add_to_serializer(:user, :custom_thumbnail_style_dropdown, false) do
  object.custom_thumbnail_style_dropdown
end

Буду благодарен за любую помощь!

Привет @Harshit_Dave

Тогда вам нужно добавить это в CurrentUserSerializer, а не в UserSerializer :wink:

Например:

  add_to_serializer(:current_user, :can_create_poll) do
    scope.user&.staff? || scope.user&.in_any_groups?(SiteSetting.poll_create_allowed_groups_map)
  end

Привет, @Lhc_fl

Спасибо за обращение!

Я попытался использовать сериализатор :current_user, но получил ошибку NoMethodError.

Я попробовал следующий код. Не уверен в нём, так как я новичок в Discourse:

add_to_serializer(:current_user, :custom_thumbnail_style_dropdown) do
object.custom_thumbnail_style_dropdown
end

Здесь object — это экземпляр User, а не UserSerializer. Поэтому вам следует написать что-то вроде этого:

add_to_serializer(:current_user, :custom_thumbnail_style_dropdown) do
    object.custom_fields["custom_thumbnail_style_dropdown"]
end

У меня всё получилось. Большое спасибо!