현재 사용자 객체에 대해 사용자 직렬화기에 추가하는 것이 작동하지 않습니다

사용자 모델에 사용자 정의 필드를 추가했는데, 현재 사용자 객체에서 가져오려고 했을 때 해당 필드가 표시되지 않았습니다. 사용자 정의 필드를 가져오는 방법은 무엇일까요?

아래 코드를 시도해 보았습니다.

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

그렇다면 UserSerializer 대신 CurrentUserSerializer에 추가해야 합니다 :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는 UserSerializer가 아니라 User의 인스턴스입니다. 따라서 다음과 같이 작성해야 합니다:

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

저한테는 잘 작동했어요. 정말 감사합니다!