13

私は自分のプロジェクトでPapertrail gemを使用しており、次のことを行う方法を見つけるために広範囲に検索しました。

私がやりたいことは、特定の属性が特定の値になったオブジェクトのバージョンを見つけることです。

object.versions.where(attribute: "value")

これが Papertrail でも可能かどうかは誰にもわかりませんか?

4

3 に答える 3

11

attribute以下は、になったすべてのバージョンを取得しますvalue(ほとんどのアプリでは、おそらく 1 前後です)。

object.versions.
       map(&:object_changes).
       map{|a| YAML::load a}.
       select{|a| (a[:attribute] || [])[1]=='value'}

結果は次のようになります。

[{"attribute"=>[nil, "value"],
  "updated_at"=>[2015-01-02 12:20:36 UTC, 2015-01-02 12:20:56 UTC]}]

updated_at[1]値はいつにattributeなったかを示しますvalue

バージョンの ID の取得は、提供されたコード スニペットに基づいて構築できます。

于 2015-01-02T17:51:02.527 に答える