Adicionar ao serializador do usuário não funciona para o objeto do usuário atual

Adicionei um campo personalizado ao modelo de usuário, mas quando tentei buscá-lo no objeto do usuário atual, não o obtive. Como posso buscar o campo personalizado?

Tentei o código abaixo

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

Eu até tentei object.custom_thumbnail_style_dropdown na definição, mas não funcionou.

Também tentei o código abaixo

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

Qualquer ajuda seria apreciada!

Olá @Harshit_Dave

Então você deveria adicionar ao CurrentUserSerializer em vez do UserSerializer :wink:

Por exemplo:

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

Olá @Lhc_fl

Obrigado por enviar uma mensagem!

Tentei usar o serializador :current_user, mas então recebi um erro NoMethodError

Tentei o código abaixo. Não tenho certeza sobre o código, pois sou novo no Discourse:

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

Aqui object é uma instância de User, não de UserSerializer. Portanto, você deve escrever algo como isto:

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

Funcionou para mim. Muito obrigado!

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.