Sha256: bdc34023b80cd5b57eff32b8f576d714dffe6ca154e77a8d9f0a387d2b37f1e0

Contents?: true

Size: 803 Bytes

Versions: 1

Compression:

Stored size: 803 Bytes

Contents

require 'activesearch/mongoid/model'

module ActiveSearch
  
  # TODO: Wrap this so all engines behave consistently
  def self.search(text)
    Mongoid::Model.all_in(keywords: text.split)
  end
  
  module Mongoid
    def self.included(base)
      base.extend ClassMethods
    end
    
    module ClassMethods
      def search_on(*fields)
        # TODO: Use inheritable class variables, so ActiveSearch::Mongoid::Model can get fields and options from there
        self.class_eval <<-EOV
          after_save do
            fields = #{fields}
            options = fields.pop if fields.last.is_a?(Hash)
            return unless fields.any? { |f| self.send("\#{f}_changed?") }
            ActiveSearch::Mongoid::Model.reindex(self, fields, options)
          end
        EOV
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activesearch-0.0.2 lib/activesearch/mongoid.rb