/posted 过滤器不包含导入的主题吗?

当我的用户访问“/posted”页面(例如 https://meta.discourse.org/posted )时,其中不包含从先前站点导入帖子的主题。尽管他们的帖子显示在“/u/xxx/activity/topics”页面上。

不过,对我自己的帐户来说,“/posted”似乎可以正常处理导入的内容。但是,我确实将我的导入帐户与创建 discourse 实例的主帐户合并了,所以这可能是原因?

这是一个 bug 吗?如果有人能帮助我理解,或者至少指出 discourse 存储库中用于 /posted 过滤器的后端代码,我可以尝试自己找出问题。作为一个相对刚接触 Ruby 和 Rails 的人,discourse github 的文件结构仍然超出了我的完全理解。非常感谢!

这是我的猜测。如果帖子是由登录用户以外的用户创建的,这是预期的行为,对吧?

如果导入的帐户与人们正在使用的帐户不同,您需要解决这个问题。

1 个赞

也许我应该澄清一下

在我的账户上,我将我的初始 discourse 管理员账户与我从旧论坛导入的账户合并了。我曾经发布过的所有主题都正确地显示在 /posted 上。

对于其他所有人来说,他们使用的账户只是从旧网站导入的。对他们来说,只有在导入之后他们发布过的主题才会显示在 /posted 上。我已经用一个测试小号确认了这一点。

我假设导入的帖子在 /posted 上显示的内容方面仍然应该很重要,所以我的账户行为是正确的,但其他用户并非如此。我假设合并步骤是关键,因为它在我的所有旧帖子导入之后将它们分配给了一个新账户。

接下来我会确认一下,那些没有显示在 /posted 中的帖子,是否确实属于正在查找它们的那个用户。类似这样:

u = User.find_by_username('whateverUser')
posts = Post.where(user_id: u.id)

然后看看这些帖子是否包含你认为应该显示的帖子,或者不包含。

反过来,你也可以这样做:

p = Post.find(post_id_you_want)

然后看看哪个用户拥有该帖子。

1 个赞

导入的主题会出现在 /my/activity/topics 页面上,而 不会 出现在除我之外的其他用户的 /posted 页面上。

导入的帖子也会出现在 /my/activity/replies 下,但相应的帖子不会出现在除我之外的其他用户的 /posted 页面上。

我还通过一个示例主题进行了确认。/t/xxx.json 上的 user_id/u/yyy.json 上的用户 id 匹配,但主题 xxx 没有出现在用户 yyy/posted 页面上。

我也许可以尝试运行你提供的代码,但据我所知,似乎没有理由认为这是所有权问题。

FWIW 之前在更改帖子所有权时出现过类似问题。我想知道这是否能为你的情况提供一些额外的线索?

1 个赞

这似乎和您说的是类似的问题(虽然不完全一样),也许我可以深入研究一下那个提交中更新的代码。

1 个赞