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