使用paper_trail保存版本注释

时间:2013-12-19 00:42:29

标签: ruby-on-rails paper-trail-gem

我有一个模型(Candidate),我需要跟踪更改,版本差异,更改它以及他们对更改的任何评论。我喜欢paper_trail,这正是我几乎所有方面所需要的,但我想知道存储“改变评论”的最佳方式是什么。我一直在考虑实施以下三个选项之一:

  1. comments表格中添加versions列。如果我这样做,我不太确定实际更新该信息的最佳方式。也许candidate.version.comments = @comments可行吗?将自定义列添加到paper_trail表中是不是很糟糕?

  2. 使用paper_trail的元数据存储评论。这似乎不是元数据的意图,但它可能会起作用吗?

  3. 添加另一个表格belongs_to :candidate,以跟踪commentsversion。这看起来很糟糕 - 我还需要让这个新表属于版本表吗?

  4. 非常感谢任何见解。我一直非常专注于使用paper_trail寻找解决方案,因为我之前已经使用过它,但我也会考虑过去使用过的其他宝石或选项。

1 个答案:

答案 0 :(得分:3)

我最终选择了选项1.我创建了一个迁移,在版本表中添加了一个注释字段,并将以下内容添加到CandidatesController#update

if @candidate.update(candidate_params)
    #Add comments if they are available
    @candidate.reload.versions.last.update(comments: params[:comments]) unless params[:comments].empty?

它似乎工作得很好,但我很欣赏你的任何其他想法!