我正在开发一个Rails项目,我希望允许用户创建单独的注释,这些注释实际上只是文本字段。对于每个注释,用户可以编辑他们之前编写的内容,但旧版本保存在修订表中。我正试图找出解决这个问题的最佳方法。
我最初的想法是建立以下关系:
class User < ActiveRecord::Base
has_many :notes
end
class Note < ActiveRecord::Base
has_many :note_revisions
belongs_to :user
end
class NoteRevision < ActiveRecord::Base
belongs_to :note_revision
end
Note模型仅包含首次创建注释的时间戳。 NoteRevision模型将包含文本以及每个修订的时间戳。这样,每次进行新修订时,都会在NoteRevision表中创建一个新条目,该表将通过Note表进行跟踪。希望这是有道理的!
首先,这看起来是一个很好的方法吗?如果是这样,我无法弄清楚控制器和视图将如何以一种形式呈现此信息。是否有任何好的教程或有人看到类似的东西可以指出我正确的方向?
提前致谢!
答案 0 :(得分:2)
我会查看paper trail,它将为您处理所有版本控制并帮助您轻松返回最新版本。在幕后它会做类似于你试图做的事情,但已被许多人彻底测试和使用。它也得益于积极的发展。
答案 1 :(得分:0)
另一种选择是vestal_versions宝石。 Railscasts.com有一集使用它:http://railscasts.com/episodes/177-model-versioning