Paper_Trail:显示版本之间的差异
我是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设置中显示如下版本:
Previous XOI dated
不知道如何显示两者之间的差异。
真的很感激帮助。
使用PaperTrail查看有关差异版本的文档 。 特别是,这是你想要注意的:
如果将object_changes文本列添加到版本表,则在安装时使用rails生成paper_trail:install –with-changes选项或手动,PaperTrail将在每个更新版本中存储更改diff(不包括PaperTrail忽略的任何属性) 。
启用此行为后,获取object.versions.map {| v |是相当简单的 [v.created_at,v.changeset]}然后迭代该结构以呈现更改日志。
我假设你已经安装了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 - 差异版本
Interesting Posts
在rails_admin paper_trail历史记录中显示User的自定义标签
列出所有paper_trail版本(包括关联)的正确方法是什么?
NoMethodError – 升级Rails 4.2后的Paper Trail问题的未定义方法`timestamp_sort_order’
是否有PaperTrail gem的全局配置选项列表?
Papertrail和Carrierwave
在Papertrail中显示各个记录的所有版本
如何设置管理员批准模型的编辑
纸张跟踪手动版本控制无法按预期工作
Rails 4 x paper_trail:使用嵌套资源按item_id过滤版本
PaperTrail:在控制器上下文之外的info_for_paper_trail