我希望在为项目管理构建的 Rails 实例中跟踪一些相对基本的修订。我很惊讶在这个话题上发现很少,所以我想我会把它贴在这里。也许我只是在寻找错误的地方?我会在接近顶部时明确表示:我不只是想使用某人的宝石(如 Paper Trails),除非有人能告诉我这确实是我唯一的选择。认为这是一个理论上的练习,而不是一个最适合生产的时间练习。
My basic organization idea is this: one Project
model with many Revision
models, organized by created_at
. The Project
is basically just an ID, with most data housed in the Revision
s. The first Revision
contains all necessary data - which users are involved in the project, when it's due, etc. Then the easiest thing to do would be to duplicate that Revision
, with changes, for each subsequent change. But that seems to be adding a lot of unnecessary data to the table every time, especially if only one of 12 fields is changed.
我对 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
ID Project
1?如果这不是最好的解决方法……那是什么?
另一件需要注意的事情是,其中一些字段将通过has_many
和连接到其他模型has_many :through
。对我来说,这排除了Revision
使用仅包含修改字段名称和新内容的模型的想法。
我想这样做而不只是使用别人的图书馆。感觉就像一个相对较小的问题,我只是不知道如何开始解决。但也许我正试图打开一个比感觉大得多的蠕虫罐?