向用户序列化器添加内容对当前用户对象不起作用

我在用户模型中添加了自定义字段,但当我尝试在当前用户对象中获取它时,我没有得到自定义字段。我该如何获取自定义字段?

我尝试了以下代码:

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

那么你应该将其添加到 CurrentUserSerializer 而不是 UserSerializer :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
2 个赞

您好 @Lhc_fl

谢谢您的留言!

我尝试使用 :current_user 序列化器,但之后出现了 NoMethodError 错误。

我尝试了以下代码。我对代码不太确定,因为我是 Discourse 新手:

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

这里 objectUser 的一个实例,而不是 UserSerializer。因此,你应该这样写:

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

对我来说奏效了。非常感谢!

2 个赞

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