2012-07-08 14 views
7

Estoy usando audited para rastrear cambios para un modelo llamado Page. Me gustaría poder encontrar todas las auditorías asociadas con un determinado usuario (a través del user_id en la tabla de auditorías).auditado, Buscar auditorías pertenecientes a un usuario

¿Cómo puedo hacer eso? Hasta ahora, la única manera que he encontrado para tener acceso al modelo de Audit es así:

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

no parece que al igual que es la forma correcta de hacer las cosas.

Probar @audits = Audit.all da un error Uninitialized constant.

¿Hay una forma más elegante de interactuar con los modelos proporcionados por las gemas?

Respuesta

6

tal vez algo como

include Audited::Adapters::ActiveRecord::Audit

y entonces usted puede hacer

@audits = Audit.all

?

creo que debería funcionar ... O mejor aún:

include Audited

+0

Sí funciona este incluirá auditados, ver un ejemplo sencillo: Auditoría clase nictrix

+2

vale la pena señalar que se puede hacer Audited.audit_class que a su vez le permite hacer cosas como Audited.audit_class.where ("...") – user3334690

1

puede acceder a todos los registros de auditoría con

Audited::Audit.all 

me dieron el resultado cuando he escrito el

Audited.audit_class 

DEPR ADVERTENCIA DE ECACIÓN: audit_class está en desuso y se eliminará de Rails 5.0 (Audited.audit_class ahora siempre se audita :: Auditoría. Este método se eliminará).

0

Sé que esta no es una manera eficiente de hacerlo, pero así es como lo hago.

En una consola de Rails recupero un registro que sé que está auditado.

@page = Page.first

luego recupero primera auditoría de ese registro.

@audit = @page.audits.first

entonces usted puede llamar #class en @audit

@audit.class

Resultado:

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 es el nombre de la clase, que luego se puede utilizar en su búsqueda.

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

Cuestiones relacionadas