L'aggiunta al serializer dell'utente non funziona per l'oggetto utente corrente

Ho aggiunto un campo personalizzato nel modello utente ma quando ho provato a recuperarlo nell’oggetto utente corrente non ho ottenuto il campo personalizzato. Come posso recuperare il campo personalizzato?

Ho provato il codice seguente

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

ho anche provato object.custom_thumbnail_style_dropdown nella definizione ma non ha funzionato.

Ho anche provato il codice seguente

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

Qualsiasi aiuto sarebbe apprezzato!

Ciao @Harshit_Dave

Allora dovresti aggiungerlo a CurrentUserSerializer invece che a UserSerializer :wink:

Ad esempio:

  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 Mi Piace

Ciao @Lhc_fl

Grazie per il tuo messaggio!

Ho provato a usare il serializer :current_user ma poi ho ricevuto un errore NoMethodError

Ho provato il codice sottostante. Non sono sicuro del codice dato che sono nuovo a Discourse:

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

Qui object è un’istanza di User, non di UserSerializer. Pertanto, dovresti scrivere qualcosa di simile a questo:

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

Ha funzionato per me. Grazie mille!

2 Mi Piace

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