Skip to content
This repository
tag: v4.6.1
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 57 lines (48 sloc) 1.278 kb
1 2 3 4 5 6 7 8 9 10 11 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
module Picky
  # Provides the following to the model.
  #
  # * Adds a Model.search method.
  # * Hooks into after_commit.
  #
  # Example:
  #
  #
  #
  module ActiveRecord
    
    def self.included model
      model.send :include, Indexing
      model.send :include, Searching
    end
    
    module Indexing
      def self.included model
        model.class.class_eval do
          
          define_method :updates_picky do |index_or_index_name = model.name.tableize|
            index = index_or_index_name.respond_to?(:to_sym) ?
                    Picky::Indexes[index_or_index_name.to_sym] :
                    index_or_index_name
            
            model.after_commit do
              if destroyed?
                index.remove self.id
              else
                index.replace self
              end
            end
          end
          
        end
      end
    end
    
    module Searching
      def self.included model
        model.class.class_eval do
          
          define_method :searches_picky do |search|
            model.class.class_eval do
              define_method :search do |*args|
                search.search *args
              end
            end
          end
          
        end
      end
    end
     
  end
end
Something went wrong with that request. Please try again.