我希望在为项目管理构建的Rails实例中跟踪一些相对基本的修订。我很惊讶地发现这个话题很少,所以我想我会把它发布在这里。也许我只是在寻找错误的地方?我会清楚地知道这一点:我不只想使用别人的宝石(如Paper Trails),除非有人能告诉我&#39真的是我唯一的选择。在理论上考虑这个练习不仅仅是最适合生产的练习。
我的基本组织理念是这样的:一个Project
模型,其中有Revision
个模型,由created_at
组织。 Project
基本上只是一个ID,大多数数据都位于Revision
中。第一个Revision
包含所有必要的数据 - 用户参与项目,到期时间等等。然后,最简单的方法是复制Revision
,并进行更改,对于每个后续更改。但这似乎每次都会在表格中添加大量不必要的数据,特别是如果只改变了12个字段中的一个。
我对Rails很新,因此一些MVC,更强烈的面向对象的东西对我来说仍然是一种新的东西。我的想法是让Revision
仅包含created_at
,创建它的User
以及实际更改的任何字段。但如果这是最好的策略,我将如何在Rails中压缩这些数据?也就是说,如果我有Revision
s的这个表:
Project_ID | Title | Description | Due Date | Created_at | Created_by
-------------|---------|---------------|------------|------------|-----------------
1 | Test | Test project | 9/28/2012 | 9/10/2012 | Ben
1 | | | 9/31/2012 | 9/13/2012 | Stuart
1 | | Changed proj | | 9/13/2012 | Liz
而且,实际上,这是最好的方法,如何将Test,Changed proj,9/31/2012
弄为Project
且ID为1?如果这不是最佳方式......那是什么?
另外需要注意的是,如果重要的是,其中一些字段会通过has_many
和has_many :through
连接到其他模型。对我来说,这排除了Revision
模型只包含修改字段名称和新内容的想法。
我想在不使用别人的图书馆的情况下这样做。感觉这是一个相对较小的问题,我不知道如何开始解决。但也许我试图打开比你感觉更大的虫子?