self.included

in elasticsearch-model/lib/elasticsearch/model/proxy.rb [52:94]


      def self.included(base)
        base.class_eval do
          
          def self.__elasticsearch__ &block
            @__elasticsearch__ ||= ClassMethodsProxy.new(self)
            @__elasticsearch__.instance_eval(&block) if block_given?
            @__elasticsearch__
          end

          
          self.__elasticsearch__.class_eval do
            include Adapter.from_class(base).importing_mixin
          end

          
          
          
          
          
          before_save do |obj|
            if obj.respond_to?(:changes_to_save) 
              changes_to_save = obj.changes_to_save
            elsif obj.respond_to?(:changes)
              changes_to_save = obj.changes
            end

            if changes_to_save
              attrs = obj.__elasticsearch__.instance_variable_get(:@__changed_model_attributes) || {}
              latest_changes = changes_to_save.inject({}) { |latest_changes, (k,v)| latest_changes.merge!(k => v.last) }
              obj.__elasticsearch__.instance_variable_set(:@__changed_model_attributes, attrs.merge(latest_changes))
            end
          end if respond_to?(:before_save)
        end

        
        
        def __elasticsearch__ &block
          @__elasticsearch__ ||= InstanceMethodsProxy.new(self)
          @__elasticsearch__.instance_eval(&block) if block_given?
          @__elasticsearch__
        end
      end