2

我正在尝试检索纸迹已版本化的对象。但是,当我使用 .reify 时,它会检索以前的版本。不是最新的。

例如

控制器

@line_item_versions = PaperTrail::Version.where(item_type: 'LineItem', secondary_id: params[:id]).order('created_at ASC')

看法

<% @line_item_versions.each_with_index do |line_item, index| %>
<% object = line_item.reify(options = {}) %>
          <% if object %>
                <b><%= object.name %></b> : <%= object.quantity %>
              </font>
          <% end %>

object = line_item.last.reify(options = {})object = line_item.next_version.reify(options = {})两者都返回未定义的方法错误。

如何检索适当的对象,以便可以交互和显示特定信息?

4

1 回答 1

3

这是因为 PaperTrail 将对象存储为更改前的状态,因此,当您对其进行具体化时,它将显示其先前的状态,如果您想获取更改后的名称,您可以添加 object_change 列到您的版本表,然后如果您需要的对象已更改,则调用变更集,打印更新的字段,如果没有,打印具体的对象字段,如下所示:

<%= line_item.changeset[:name].nil? object.name : line_item.changeset[:name][1] %></b> : <%= line_item.changeset[:quantity].nil? object.quantity : line_item.changeset[:quantity][1] %>
于 2014-10-13T14:26:07.807 回答