如何在帖子序列化器中添加用户数据?

我正在尝试创建一个主题或插件,以便在帖子小部件中添加和更新链接。我认为最简单的方法是将用户配置文件中的 website 字段包含在帖子序列化器中,但我还无法完全实现。

我已经知道如何更新帖子序列化器以添加简单数据,但无法弄清楚如何添加来自创建该帖子的用户对象的数据。我也担心这样做会导致每个用户/帖子都触发一次数据库查询。

是否有现有的插件可供参考?或者更好的是,是否有一种方法可以通过在主题组件中覆盖小部件,将帖子用户数据添加到帖子序列化器中,而无需依赖插件?

谢谢!

1 个赞

我认为这已经可以工作了,至少达到了可接受的程度。我无法弄清楚如何将 website 字段添加到帖子序列化器中,而且似乎无法添加名为 user_custom_fields 的字段(也许这是保留的)。我能够添加一个名为 user_extra_fields 的字段,其中包含所有的 user.custom_fields。然后,在我的主题组件中,我可以根据需要访问这些字段(尽管必须使用名为 user_field_1 的字段有点奇怪)。

以下代码实现了我的需求:

after_initialize do
  add_to_serializer(:post, :user_extra_fields, false) {
    return object.user.custom_fields
  }
end
2 个赞