2012-07-08 6 views
7

Ich verwende audited, um Änderungen für ein Modell namens Page zu verfolgen. Ich möchte in der Lage sein, alle Audits zu finden, die einem bestimmten Benutzer zugeordnet sind (über user_id in der Audit-Tabelle).Geprüft, Nachschlage-Audits eines Benutzers

Wie kann ich das tun? Bisher war die einzige Möglichkeit, die ich gefunden habe ist das Audit Modell zugreifen wie folgt aus:

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

, die gerade nicht scheint, wie es der richtige Weg, Dinge zu tun.

Probieren @audits = Audit.all gibt einen Uninitialized constant Fehler.

Gibt es eine elegantere Art der Interaktion mit Modellen, die von Edelsteinen bereitgestellt werden?

Antwort

6

Vielleicht so etwas wie

include Audited::Adapters::ActiveRecord::Audit

und dann können Sie

tun

@audits = Audit.all

?

denke ich, dass sollte funktionieren ... Oder noch besser:

include Audited

+0

Ja Diese Arbeiten umfassen Geprüften, ein einfaches Beispiel sehen: Klasse Audit nictrix

+2

Geprüften es ist erwähnenswert, dass Sie Audited.audit_class tun können, das Ihnen erlaubt, dann Dinge zu tun wie Audited.audit_class.where ("...") – user3334690

1

Sie alle Audit Datensätze zugreifen können mit

Audited::Audit.all 

bekam ich das Ergebnis, wenn ich die

getippt
Audited.audit_class 

DEPR WARNUNG: audit_class ist veraltet und wird von Rails 5.0 entfernt ( ) (Audited.audit_class ist jetzt immer Geprüft :: Audit. Diese Methode wird entfernt.).

0

Ich weiß, dass dies kein effizienter Weg ist, aber so mache ich es.

In einer Rails-Konsole erhalte ich einen Datensatz, von dem ich weiß, dass er auditiert wird.

@page = Page.first

ich abrufen um dann die erste Prüfung des Datensatzes.

@audit = @page.audits.first

Sie können dann #class rufen @audit

@audit.class

Ergebnis:

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 ist der Klassenname, die Sie dann bei Ihrer Suche verwenden können.

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