1

レールでの監査にcollectiveideaの監査済みソリューションを使用しています。したがって、データベースにはTEXT定義である列(audited_changes)があります。データベースから監査を取得すると、プレーンな文字列が取得され、ビューでその属性を呼び出すと、フォーマットされていない文字列になります。rdocsには、すべての変更のシリアル化されたハッシュがあると書かれています。このハッシュを取得するにはどうすればよいですか?また、同じドキュメントでは、old_attributesとnew_attributesへのアクセスがあると書かれていますが、これはどうですか?

私からしてみれば:

<%= @audit.action %> # => update
<%= @audit.audited_changes %> # => --- name: - oldname - newname code: - oldcode - newcode

または、これをフォーマットするチャンスはありますか?

4

3 に答える 3

3

現在、監査にバグがある可能性があると思います。3.0.0rc1を使用していますか?それが私が使っているもので、私は似たようなことが起こりました。まず、「Audit」をActiveRecordオブジェクトとして認識していないようだったので、app / models/audit.rbに空のモデルを作成しました。私がそれをしたら、私はあなたが見ている行動を見ていました。これを修正するために、app / models / audit.rbを削除し、config / initializers/audited.rbにこれを追加しました。

include Audited::Adapters::ActiveRecord
于 2012-05-11T02:21:47.303 に答える
0

これは古い質問ですが、Rails4.2を使用してうまく機能しているように見える別の答えがあります。上記の回答で初期化子を使用する代わりに、モデルを保持し、先頭に「serialize:audited_changes」を追加することをお勧めします。

 class Audit < ActiveRecord::Base
   belongs_to :user
   serialize :audited_changes
 end
于 2017-08-02T17:17:20.550 に答える
0

組み込みのAudited::Auditモデルを使用して、そのデータを照会できます。

例えば、

audit = Audited::Audit.last
audit.audited_changes # => {"name"=>["Steve", "Ryan"]}

「スティーブ」は古い値、「ライアン」は新しい値です。デフォルトでは、ハッシュはyaml形式でデータベースに保存されます。

于 2019-09-09T16:36:21.887 に答える