Rails - Paper Trail Gem,如何获取特定数据

时间:2012-03-14 03:15:33

标签: ruby-on-rails regex ruby-on-rails-3

我开始使用Paper Trail gem,我有这个产品型号:

  • name:string qty:integer color:string

在我的product.rb里面我有这个:

  • has_paper_trail

所以一切正常,我只对单个产品进行2次更新,只修改了数量。 在我的rails控制台中,我执行了以下操作:

Product.last.versions.map(&:object)

得到了这个

[“--- \ nname:p1 \ nqty:20 \ ncolor:c1 \ ncreated_at:2012-03-14 03:02:22.186453000 Z \ nupdated_at:2012-03-14 03:02:22.186453000 Z \ nid:3 \ n“,”--- \ nname:p1 \ nqty:40 \ ncolor:c1 \ ncreated_at:2012-03-14 03:02:22.186453000 Z \ nupdated_at:2012-03-14 03:07 :53.291624000 Z \ nid:3 \ n“]

当我这样做时:

puts Product.last.versions.map(&:object)

我明白了:

---
name: p1
qty: 20
color: c1
created_at: 2012-03-14 03:02:22.186453000 Z
updated_at: 2012-03-14 03:02:22.186453000 Z
id: 3
---
name: p1
qty: 40
color: c1
created_at: 2012-03-14 03:02:22.186453000 Z
updated_at: 2012-03-14 03:07:53.291624000 Z
id: 3

我想知道如何获得每次变化的数量。我虽然是正则表达式,但我不确定如何。

我想在我看来显示这个

  • 产品:

    • 姓名:c1数量:980

    • 的变化:

    • (date1):20 | (日期2):40 | ........ | (dateN):N

有什么建议吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

序列化为YAML。有一种方法可以做到这一点。我正在使用从版本映射中获得的product_versions对象。

product_versions.map{ |product_version| YAML::load(product_version)}.map{|item| [item["updated_at"],item["qty"]]}

这会给你

[[2012-03-14 03:02:22 UTC, 20], [2012-03-14 03:07:53 UTC, 40]]