Class: PaperTrailViewer::DataSource::ActiveRecord
- Defined in:
- lib/paper_trail_viewer/data_source/active_record.rb
Overview
The default data source. Queries version records via ActiveRecord. See DataSource::Bigquery::Adapter for how to implement another source.
Instance Method Summary collapse
-
#initialize(version_class: 'PaperTrail::Version') ⇒ ActiveRecord
constructor
A new instance of ActiveRecord.
- #perform_query(q) ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(version_class: 'PaperTrail::Version') ⇒ ActiveRecord
Returns a new instance of ActiveRecord.
7 8 9 |
# File 'lib/paper_trail_viewer/data_source/active_record.rb', line 7 def initialize(version_class: 'PaperTrail::Version') @version_class = version_class end |
Instance Method Details
#perform_query(q) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/paper_trail_viewer/data_source/active_record.rb', line 12 def perform_query(q) version_class = q.version_class || @version_class versions = version_class.is_a?(String) ? version_class.constantize : version_class if 'object_changes'.in?(versions.column_names) # Ignore blank versions that only touch updated_at or untracked fields. versions = versions.where.not(object_changes: '') versions = versions.where('object_changes LIKE ?', "%#{q.filter}%") if q.filter.present? elsif 'object'.in?(versions.column_names) versions = versions.where('object LIKE ?', "%#{q.filter}%") if q.filter.present? end versions = versions.where(item_type: q.item_type) if q.item_type.present? versions = versions.where(item_id: q.item_id) if q.item_id.present? versions = versions.where(event: q.event) if q.event.present? versions.order('created_at DESC, id DESC').page(q.page).per(q.per_page) end |