Проверено, поиск аудитов, принадлежащих пользователю

Я использую audited отслеживать изменения для модели под названием Page, Я хотел бы иметь возможность найти все проверки, связанные с определенным пользователем (через user_id в таблице ревизий).

Как я могу это сделать? Пока что единственный способ найти доступ к Audit модель такая:

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

Который просто не кажется, что это правильный способ делать вещи.

Попытка @audits = Audit.all дает Uninitialized constant ошибка.

Есть ли более изящный способ взаимодействия с моделями, предоставляемыми гемами?

3 ответа

Может быть что-то вроде

include Audited::Adapters::ActiveRecord::Audit

и тогда вы можете сделать

@audits = Audit.all

?

Я думаю, что должно работать... Или еще лучше

include Audited

Вы можете получить доступ ко всем записям аудита с

Audited::Audit.all

Я получил результат, когда набрал

Audited.audit_class

ПРЕДУПРЕЖДЕНИЕ ОБ УСТРОЙСТВЕ: aud_class устарел и будет удален из Rails 5.0 (Audited.audit_class теперь всегда Audited::Audit. Этот метод будет удален.).

Я знаю, что это неэффективный способ сделать это, но я так и делаю.

В консоли Rails я получаю запись, которая, как я знаю, проверяется.

@page = Page.first

Затем я получаю первый аудит этой записи.

@audit = @page.audits.first

Вы можете позвонить #class на @audit

@audit.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)

Другие вопросы по тегам