Rails - Paper Trail Gem, как получить конкретные данные - PullRequest
0 голосов
/ 14 марта 2012

Я начинаю использовать драгоценный камень Paper Trail, у меня есть эта модель продукта:

  • имя: строка Кол-во: целое число цвет: строка

и внутри моего продукта.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

    • Изменения:

    • (дата1): 20 |(дата2): 40 |........ |(dateN): N

Есть предложения?

заранее спасибо

1 Ответ

0 голосов
/ 14 марта 2012

Его сериализовано в 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]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...