Paper_Trail:显示版本之间的差异

cwa*_*ne2 5 ruby versions ruby-on-rails paper-trail-gem

我是Rails的新手...使用RubyMine作为IDE。

我让Paper_Trail保存数据“ xoi_qb”的先前版本。我的视图当前正在显示当前和以前的数据,但是我想显示当前版本“ xoi_qb”和先前版本“ xoi_qb”之间的差异。例如,当前版本可能是“ 97”,而先前版本可能是“ 94”,我想显示“ XOI +/-:+3”。我想显示这种差异,并根据正面或负面的变化添加“ +”或“-”。

在我的模型中,Paper Trail设置为创建如下版本:

  def get_xoi_qb
    xoi_qb = []
    self.versions.each do |version|
      unless version.reify.nil?
        xoi_qb << version.reify.xoi_qb
      end
    end
    return xoi_qb
  end
Run Code Online (Sandbox Code Playgroud)

在我的HTML集中显示以下版本:

  <th>Previous XOI</th>
  <table>
    <% @quarterback.versions.each do |version| %>
        <tr>
          <td><%= version.reify.xoi_qb %> dated <%= version.created_at %></td>
        </tr>
    <% end %>
Run Code Online (Sandbox Code Playgroud)

不确定如何显示两者之间的差异。

非常感谢您的帮助。

May*_*abi 6

查看有关使用PaperTrail进行版本比较的文档。特别要注意的是:

如果您在版本表中添加object_changes文本列,则在安装时使用rails生成paper_trail:install --with-changes选项,或者手动进行安装,PaperTrail将在每个更新版本中存储更改diff(不包括PaperTrail忽略的任何属性) 。

启用此行为后,获取object.versions.map {| v | [v.created_at,v.changeset]},然后遍历该结构以呈现您的更改日志。


Raj*_*n_R -1

我假设您已经安装了 paper_trail gem。您可以手动或通过迁移将 object_changes 文本列添加到版本表中。

rails g migration AddColumnToVersions
class AddColumnToVersions < ActiveRecord::Migration
  def change
    execute "ALTER TABLE versions ADD object_changes TEXT"
  end
end
Run Code Online (Sandbox Code Playgroud)

然后重新启动服务器。创建记录。

检查上一个版本和当前版本之间的差异

@quarterback.versions.last.changeset
Run Code Online (Sandbox Code Playgroud)

你可以得到差异。

来源: https: //github.com/airblade/paper_trail - 版本差异