2012-07-08 11 views
7

Sto utilizzando audited per tenere traccia delle modifiche per un modello chiamato Page. Mi piacerebbe essere in grado di trovare tutti gli audit associati a un determinato utente (tramite user_id nella tabella dei controlli).sottoposto a controllo, cercare revisioni appartenenti a un utente

Come posso farlo? Finora, l'unico modo che ho trovato per accedere al modello Audit è come questo:

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

Il che proprio non sembra come se fosse il modo giusto di fare le cose.

Provare @audits = Audit.all dà un errore Uninitialized constant.

C'è un modo più aggraziato di interagire con i modelli forniti dalle gemme?

risposta

6

Forse qualcosa di simile

include Audited::Adapters::ActiveRecord::Audit

e allora si può fare

@audits = Audit.all

?

Penso che dovrebbe funzionare ... O meglio ancora:

include Audited

+0

Sì funziona questo includere sottoposto a revisione contabile, vedere un semplice esempio: classe Audit nictrix

+2

vale la pena notare che si può fare Audited.audit_class che poi ti permette di fare le cose come Audited.audit_class.where ("...") – user3334690

1

È possibile accedere a tutti i record di audit con

Audited::Audit.all 

ho ottenuto il risultato quando ho digitato il

Audited.audit_class 

DEPR ATTENZIONE ECOLOGICA: audit_class è obsoleto e verrà rimosso da Rails 5.0 (Audited.audit_class è ora sempre verificato: Audit. Questo metodo verrà rimosso.).

0

So che questo non è un modo efficace per farlo, ma è così che lo faccio.

In una console di Rails recupero un record che so essere verificato.

@page = Page.first

Ho poi recuperare prima verifica di quel record.

@audit = @page.audits.first

È quindi possibile chiamare #class su @audit

@audit.class

Risultato:

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 è il nome della classe, che è possibile utilizzare nella vostra ricerca.

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

Problemi correlati