50 lines
		
	
	
		
			911 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			911 B
		
	
	
	
		
			Ruby
		
	
	
	
require 'sunspot'
 | 
						|
require 'mongoid'
 | 
						|
require 'sunspot/rails'
 | 
						|
 | 
						|
# == Examples:
 | 
						|
#
 | 
						|
# class Post
 | 
						|
#   include Mongoid::Document
 | 
						|
#   field :title
 | 
						|
# 
 | 
						|
#   include Sunspot::Mongoid
 | 
						|
#   searchable do
 | 
						|
#     text :title
 | 
						|
#   end
 | 
						|
# end
 | 
						|
#
 | 
						|
module Sunspot
 | 
						|
  module Mongoid
 | 
						|
    def self.included(base)
 | 
						|
      base.class_eval do
 | 
						|
        extend Sunspot::Rails::Searchable::ActsAsMethods
 | 
						|
        Sunspot::Adapters::DataAccessor.register(DataAccessor, base)
 | 
						|
        Sunspot::Adapters::InstanceAdapter.register(InstanceAdapter, base)
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    class InstanceAdapter < Sunspot::Adapters::InstanceAdapter
 | 
						|
      def id
 | 
						|
        @instance.id
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    class DataAccessor < Sunspot::Adapters::DataAccessor
 | 
						|
      def load(id)
 | 
						|
        criteria(id).first
 | 
						|
      end
 | 
						|
 | 
						|
      def load_all(ids)
 | 
						|
        criteria(ids)
 | 
						|
      end
 | 
						|
 | 
						|
      private
 | 
						|
 | 
						|
      def criteria(id)
 | 
						|
        @clazz.criteria.id(id)
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |