我正在尝试检索纸质路径已版本化的对象。但是,当我使用.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 = {})
都返回未定义的方法错误。
如何检索相应的对象以便我可以交互并显示特定信息?
答案 0 :(得分:2)
这是因为PaperTrail将对象存储为更改前的对象,因此,当您对其进行修改时,它将显示其先前的状态,如果您想要获取更改后的名称,则可以将object_change列添加到您的版本表中,如果您需要的对象已更改,则调用changeset,打印更新的字段,如果不是,则打印已知的对象字段,如下所示:
<%= 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] %>