2012-07-08 42 views
7

Tôi đang sử dụng audited để theo dõi các thay đổi cho một kiểu gọi là Page. Tôi muốn có thể tìm thấy tất cả các kiểm toán liên kết với một người dùng nhất định (thông qua user_id trong bảng kiểm toán).được kiểm tra, Tra cứu các kiểm tra thuộc về người dùng

Tôi có thể làm như thế nào? Cho đến nay, cách duy nhất tôi đã tìm thấy để truy cập mô hình Audit là như thế này:

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

Mà chỉ cần không có vẻ như đó là đúng cách để làm điều này.

Đang thử @audits = Audit.all cho lỗi Uninitialized constant.

Có cách nào tương tác hơn với mô hình được cung cấp bởi đá quý không?

Trả lời

6

Có lẽ cái gì đó như

include Audited::Adapters::ActiveRecord::Audit

và sau đó bạn có thể làm

@audits = Audit.all

?

Tôi nghĩ rằng nên làm việc ... Hoặc tốt hơn:

include Audited

+0

Có công trình này bao gồm kiểm toán, xem một ví dụ đơn giản: lớp Kiểm toán nictrix

+2

nó có giá trị lưu ý rằng bạn có thể làm Audited.audit_class mà sau đó cho phép bạn làm những điều như Audited.audit_class.where ("...") – user3334690

1

Bạn có thể truy cập tất cả các hồ sơ kiểm toán với

Audited::Audit.all 

tôi có kết quả khi tôi gõ

Audited.audit_class 

DEPR CẢNH BÁO ECATION: audit_class không được chấp nhận và sẽ bị xóa từ Rails 5.0 (Audited.audit_class giờ đây luôn được Kiểm toán :: Kiểm toán. Phương thức này sẽ bị xóa.).

0

Tôi biết đây không phải là cách hiệu quả để làm như vậy, nhưng đây là cách tôi làm điều đó.

Trong bảng điều khiển Rails, tôi truy xuất bản ghi mà tôi biết được kiểm tra.

@page = Page.first

Sau đó, tôi truy lục kiểm tra đầu tiên của bản ghi đó.

@audit = @page.audits.first

Sau đó bạn có thể gọi #class trên @audit

@audit.class

Kết quả:

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 là tên lớp, sau đó bạn có thể sử dụng trong tìm kiếm của bạn.

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

Các vấn đề liên quan