2011-02-15 128 views
0

好的场景很简单(?)。我说Articles,ReviewsComments,用户可以更新的三种不同型号。我想知道如果我希望更新后的记录(来自用户)只能向管理员(而不是公开视图)提供,但同时旧版本保持不变,那么最好的设计应该遵循什么,直到管理员审查他们。Ruby on Rails中的设计问题

首先想到的是,最好是有自我参照联接,在用户的更新操作上做出新的记录,并引用旧的记录,以便管理员在完成审阅旧记录时,后者被删除并且审查的一个得到发表。我认真考虑如果用户有很多更新,那么持有这些数据的表格将在很短的时间内增长为BIG。你有其他建议吗?

非常感谢您的帮助:)

P.S.我正在使用Ruby on Rails框架,如果这使得任何不同。

+1

也许是http://stackoverflow.com/questions/3080789/moderated-model-editing-in-rails2的副本 – Dominic 2011-02-15 23:03:00

回答

1

这有点让我想起了Wordpress草稿系统和诚恳,我认为这可能是少数几种方法之一。也就是说,有一个类似[草稿,发布等]的post_type列。或者,您可以单独制作草稿模型,也可以使用文章模型的多态性发布模型。我认为你对桌子太大的顾虑是正确的。因此,我认为你最好选择一种删除旧草稿或将它们存档在另一个表格中的策略,以便它们占据空间而不会混淆搜索时间(另外,请记住使用索引以获得更好的性能)。

也许ACT-作为状态机可以很好的帮助(http://www.practicalecommerce.com/blogs/post/122-Rails-Acts-As-State-Machine-Plugin

0

有一点要记住的是,除非你想创建一个详细的修订历史记录,也有真正的只有两个版本您需要保留的特定文章,视图或评论:该项目的当前批准公开版本和该项目的当前编辑版本。因此,您可能只需记录两个副本,并将草稿版本复制到发布中,并在草稿获得批准后删除草稿,或者在用户进行其他更改之前对草稿进行更新,然后再批准草稿。