Module: ThinkingSphinx::ActiveRecord::Delta
- Defined in:
- lib/thinking_sphinx/active_record/delta.rb
Overview
This module contains all the delta-related code for models. There isn’t really anything you need to call manually in here - except perhaps index_delta, but not sure what reason why.
Class Method Summary collapse
-
.included(base) ⇒ Object
Code for after_commit callback is written by Eli Miller: elimiller.blogspot.com/2007/06/proper-cache-expiry-with-aftercommit.html with slight modification from Joost Hietbrink.
Class Method Details
.included(base) ⇒ Object
Code for after_commit callback is written by Eli Miller: elimiller.blogspot.com/2007/06/proper-cache-expiry-with-aftercommit.html with slight modification from Joost Hietbrink.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/thinking_sphinx/active_record/delta.rb', line 12 def self.included(base) base.class_eval do class << self # Build the delta index for the related model. This won't be called # if running in the test environment. # def index_delta(instance = nil) delta_object.index(self, instance) end def delta_object self.sphinx_indexes.first.delta_object end end def toggled_delta? self.class.delta_object.toggled(self) end private # Set the delta value for the model to be true. def toggle_delta self.class.delta_object.toggle(self) if should_toggle_delta? end # Build the delta index for the related model. This won't be called # if running in the test environment. # def index_delta self.class.index_delta(self) if self.class.delta_object.toggled(self) end def should_toggle_delta? self.new_record? || indexed_data_changed? end def indexed_data_changed? sphinx_indexes.any? { |index| index.fields.any? { |field| field.changed?(self) } || index.attributes.any? { |attrib| attrib.public? && attrib.changed?(self) && !attrib.updatable? } } end end end |