module Elasticsearch::Model::Extensions::DependencyTracking

Public Class Methods

included(base) click to toggle source
# File lib/elasticsearch/model/extensions/dependency_tracking.rb, line 7
def self.included(base)
  base.extend ClassMethods

  dependency_tracker = DependencyTracker.new(base)

  base.class_eval do
    before_validation do
      dependency_tracker.each_dependent_attribute_for(changes) do |a|
        attribute_will_change! a
      end
    end
  end

  # TODO Assert that @__dependency_tracker__ is nil to prevent users from facing terrible bugs
  # trying to include this module multiple times

  base.instance_variable_set :@__dependency_tracker__, dependency_tracker
end