Ajouter au sérialiseur de l'utilisateur ne fonctionne pas pour l'objet utilisateur actuel

J’ai ajouté un champ personnalisé dans le modèle utilisateur mais lorsque j’ai essayé de le récupérer dans l’objet utilisateur actuel, je n’ai pas obtenu le champ personnalisé. Comment puis-je récupérer le champ personnalisé ?

J’ai essayé le code ci-dessous

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

J’ai même essayé object.custom_thumbnail_style_dropdown dans la définition mais cela n’a pas fonctionné.

J’ai aussi essayé le code ci-dessous

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

Toute aide serait appréciée !

Salut @Harshit_Dave

Alors vous devriez l’ajouter à CurrentUserSerializer au lieu de UserSerializer :wink:

Par exemple :

  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 « J'aime »

Salut @Lhc_fl

Merci pour votre message !

J’ai essayé d’utiliser le sérialiseur :current_user mais j’ai ensuite reçu une erreur NoMethodError

J’ai essayé le code ci-dessous. Je ne suis pas sûr du code car je suis nouveau sur Discourse :

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

Ici, object est une instance de User, et non de UserSerializer. Par conséquent, vous devriez écrire quelque chose comme ceci :

add_to_serializer(:current_user, :custom_thumbnail_style_dropdown) do
    object.custom_fields["custom_thumbnail_style_dropdown"]
end
4 « J'aime »

Ça a fonctionné pour moi. Merci beaucoup !

2 « J'aime »

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