批量恢复

继续讨论 暂时移除用户主题的公开访问的最佳方法?

是否可以在 /u/username/deleted-posts 列表中启用批量取消删除选择器?据我所知,这需要一个技术上 非常具有挑战性且可能危险 的 SQL/rails 脚本来以编程方式取消删除它们。

为了使此功能最有用,最好区分已删除的主题和已删除的回复。也许可以保留现有的 /u/username/deleted-posts URL,然后添加 /u/username/deleted-posts/topics/u/username/deleted-posts/replies

2 个赞

这些主题已经被删除了,我也不知道用户何时会请求恢复这些主题,所以我想我可以等到批量取消删除功能实现。我认为我不是唯一一个觉得它有用的人,这里有相当多的帖子请求帮助这样做。

这也看起来是一种更容易、更安全的方法来以编程方式取消删除,前提是我能弄清楚如何生成用户已删除主题 ID 的列表:

这将查找由 user_id 1 创建的已删除主题。

dts=Topic.with_deleted.where(user_id: 1).where("deleted_at is not null");
dts.pluck(:deleted_at, :id)
dps=Post.with_deleted.where(user_id: 1).where("deleted_at is not null");
dbs.pluck(:deleted_at, :id)

看起来你可以用类似下面的方法来取消删除帖子

dp=dps.first
dp.deleted_at=nil
dp.deleted_by=nil
dp.save

你对主题也会做类似的事情。

如果到了取消删除这些内容的时候,上面这些对于稍微了解一点 rails 的人来说应该足够了,可以让他们取消删除所有内容。

供参考,如果你将它们移动到一个隐藏的类别,也许可以更容易地批量恢复到上一个修订版本。但当这两种情况都对你来说完全不可能时,我认为这是一个没有区别的区别。

最后,我为再次将功能请求当作 Support 来处理而道歉。我想我这样做是因为我没有能力实现功能,但我可以解决问题。

4 个赞

没问题,Jay,非常感谢。当然,我更希望 Discourse 能实现 GUI 方法,但如果不行,我非常感谢你一步步地指导我。

1 个赞

这当然是一个极端情况,但我们会尽量记录功能被请求的次数(尤其是来自客户的请求),以便更好地了解何时应该推进 :slight_smile:

1 个赞