2012-07-08 9 views
7

Pageというモデルの変更を追跡するのにauditedを使用しています。特定のユーザーに関連するすべての監査を(監査テーブルのuser_idを介して)検索できるようにしたいと考えています。は、ユーザーに属する監査を検索します。

どうすればいいですか?これまでのところ、私はAuditモデルにアクセスすることが分かってきた唯一の方法は、このようなものです:それは物事を行うには正しい方法だようにちょうどいないようです

@audits = Audited::Adapters::ActiveRecord::Audit.all 

@audits = Audit.allを試してみると、エラーはUninitialized constantとなります。

宝石が提供するモデルとのやりとりは、より優雅な方法がありますか?

答えて

6

たぶん何かinclude Audited::Adapters::ActiveRecord::Audit

よう

、その後、あなたは

@audits = Audit.all

を行うことができますか?

私はまだ良くそれが動作するはずだと思う...または:

include Audited

+0

はいこの作品が監査を含め、簡単な例を参照してください。 クラスの監査 nictrix

+2

が含まれ、それはあなたが、あなたは物事を行うことができますAudited.audit_classを行うことができますことは注目に値しますAudited.audit_class.where( "...")のように – user3334690

1

あなたは

Audited::Audit.all 

で、すべての監査レコードにアクセスすることができ、私は

を入力すると、私は結果を得ました
Audited.audit_class 

DEPR警告:audit_classは廃止され、Rails 5.0から が削除されます(Audited.audit_classは常にAudited :: Auditになりました)。この メソッドは削除されます)。

0

これは効率的な方法ではありませんが、これは私のやり方です。

Railsコンソールでは、私が監査されていることがわかっているレコードを取得します。

@page = Page.first

私は、そのレコードの最初の監査を取得します。

@audit = @page.audits.first

その後、@audit

@audit.class

結果に#classを呼び出すことができます。

Audited::Adapters::ActiveRecord::Audit(id: integer, created_at: 
datetime, updated_at: datetime, auditable_id: integer, auditable_type: 
string, user_id: integer, user_type: string, username: string, action: 
string, audited_changes: text, version: integer, comment: string, 
full_model: text, remote_address: string, associated_id: integer, 
associated_type: string, request_uuid: string) 

Audited::Adapters::ActiveRecord::Auditは、あなたがあなたの検索で使用できるクラス名、です。

audits = Audited::Adapters::ActiveRecord::Audit.where(:user_id => 8675309)

関連する問題