Проверено, поиск аудитов, принадлежащих пользователю
Я использую 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)