我有一个模型(Candidate
),我需要跟踪更改,版本差异,谁更改了它以及他们对更改的任何评论。 我喜欢paper_trail它几乎是我所需要的,但我想知道存储"更改评论"的最佳方式是什么。 我一直在考虑实现以下三个选项之一:
-
将
comments
列添加到我的versions
表中。 如果我这样做,我不太确定实际更新该信息的最佳方法。 也许candidate.version.comments = @comments
会起作用? 将自定义列添加到paper_trail的表中不好吗? -
使用 paper_trail 的元数据来存储注释。 这似乎不是元数据的意图,但也许它会起作用?
-
添加另一个表作为
belongs_to :candidate
,以跟踪comments
和version
。这似乎很糟糕 - 我还需要让这个新表属于版本表吗?
任何见解将不胜感激。 自从我以前使用过它以来,我一直非常专注于寻找paper_trail的解决方案,但我也会考虑您过去使用过的其他宝石或选项。
我最终选择了选项 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?
它似乎工作得很好,但我很感激你的任何其他想法!