将“待定”选项添加到主题操作扳手中

抱歉回复晚了,我一直在认真思考这个问题。

将帖子设为“待审核”意味着需要硬删除该帖子,并将重建所需的所有数据存储到 reviewable 的 payload 属性中。由于担心在转换过程中因标记为 dependent: :destroy 或 dependent: :delete_all 的关联而导致数据丢失,我曾多次重写这部分逻辑。不过,经过一些测试后,我认为这样做是安全的。

如果主题没有回复,或者该帖子不是首帖,执行此操作所需的工作量应该较低到中等。所有关于将帖子加入队列的逻辑都位于 NewPostManager#enqueue 方法中,因此我们需要将其提取到一个单独的类中并加以复用。我们目前总是在帖子获批后将其添加到主题的末尾,因此若要在特定位置添加待审核帖子,则需要额外做一些工作。

使用这种方法,将包含回复的主题移回“待审核”状态会更加复杂。将其序列化为 reviewable 似乎有些过度。或许我们可以选择暂时隐藏该主题?例如,当帖子被受信任用户标记为垃圾邮件时,我们目前就是这样处理的。

另一种方案是始终采用“标记 + 删除(或隐藏)”的方式,这样会简单得多。我想不出硬删除并排队帖子有什么优势。

2 个赞