【问题标题】:paper trail retrieve object纸迹检索对象
【发布时间】:2014-10-13 13:55:10
【问题描述】:

我正在尝试检索纸质踪迹已版本化的对象。但是,当我使用 .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 = {}) 都返回未定义的方法错误。

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

【问题讨论】:

    标签: ruby-on-rails paper-trail-gem


    【解决方案1】:

    这是因为 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] %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 2013-11-17
      相关资源
      最近更新 更多