Paper_Trail:显示版本之间的差异

时间:2015-05-27 04:27:41

标签: ruby-on-rails ruby versions 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

在我的HTML设置中显示如下版本:

  <th>Previous XOI</th>
  <table>
    <% @quarterback.versions.each do |version| %>
        <tr>
          <td><%= version.reify.xoi_qb %> dated <%= version.created_at %></td>
        </tr>
    <% end %>

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

非常感谢帮助。

2 个答案:

答案 0 :(得分:5)

看看the documentation on diffing versions with PaperTrail。特别是,您需要注意的是:

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

启用此行为后,获取 object.versions.map {| v |的相当简单[v.created_at,v.changeset]} 然后迭代该结构以呈现更改日志。

答案 1 :(得分:0)

我假设你已经安装了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

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

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

@quarterback.versions.last.changeset

你可以得到不同。

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