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

**URL:** https://meta.discourse.org/t/how-to-add-user-data-to-the-post-serializer/143523
**Category:** Development
**Created:** [2020年三月6日 15:48 UTC](https://meta.discourse.org/t/how-to-add-user-data-to-the-post-serializer/143523 "2020-03-06T15:48:35Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![bennett](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bennett/32/171668_2.png) [@bennett](https://meta.discourse.org/u/bennett)
#### Post date: [2020年三月6日 15:48 UTC](https://meta.discourse.org/t/how-to-add-user-data-to-the-post-serializer/143523/1 "2020-03-06T15:48:35Z")

</div>

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

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

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

谢谢！

---

<div class="post-metadata">

### Author: ![bennett](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bennett/32/171668_2.png) [@bennett](https://meta.discourse.org/u/bennett)
#### Post date: [2020年三月6日 19:35 UTC](https://meta.discourse.org/t/how-to-add-user-data-to-the-post-serializer/143523/2 "2020-03-06T19:35:40Z")

</div>

我认为这已经可以工作了，至少达到了可接受的程度。我无法弄清楚如何将 `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

```
