Das Hinzufügen zum User Serializer funktioniert nicht für das aktuelle User-Objekt

Ich habe ein benutzerdefiniertes Feld zum Benutzermodell hinzugefügt, aber als ich versuchte, es im aktuellen Benutzerobjekt abzurufen, erhielt ich das benutzerdefinierte Feld nicht. Wie kann ich das benutzerdefinierte Feld abrufen?

Ich habe den folgenden Code ausprobiert

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

Ich habe auch object.custom_thumbnail_style_dropdown in der Definition ausprobiert, aber es hat nicht funktioniert.

Ich habe auch den folgenden Code ausprobiert

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

Jede Hilfe wäre willkommen!

Hallo @Harshit_Dave

Dann solltest du es zum CurrentUserSerializer hinzufügen, anstatt zum UserSerializer :wink:

Zum Beispiel:

  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 „Gefällt mir“

Hallo @Lhc_fl

Danke für deine Nachricht!

Ich habe versucht, den :current_user Serializer zu verwenden, aber dann erhielt ich den Fehler NoMethodError

Ich habe den folgenden Code ausprobiert. Ich bin mir bei dem Code nicht sicher, da ich neu bei Discourse bin:

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

Hier ist object eine Instanz von User, nicht von UserSerializer. Daher sollten Sie etwas wie folgt schreiben:

add_to_serializer(:current_user, :custom_thumbnail_style_dropdown) do
    object.custom_fields["custom_thumbnail_style_dropdown"]
end
4 „Gefällt mir“

Es hat für mich funktioniert. Vielen Dank!

2 „Gefällt mir“

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