def self.included(base)
base.class_eval do
class << self
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
def toggle_delta
self.class.delta_object.toggle(self) if should_toggle_delta?
end
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