Sha256: c1515f6c37f6a33bb206674a0f3e3428c4107a754cfb6c9c48b5f8ad3aa4fc11
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
require 'sunspot' require 'mongoid' require 'sunspot/rails' module Sunspot module Mongoid2 def self.included(base) base.class_eval do extend Sunspot::Rails::Searchable::ActsAsMethods extend Sunspot::Mongoid2::ActsAsMethods Sunspot::Adapters::DataAccessor.register(DataAccessor, base) Sunspot::Adapters::InstanceAdapter.register(InstanceAdapter, base) end end module ActsAsMethods # ClassMethods isn't loaded until searchable is called so we need # call it, then extend our own ClassMethods. def searchable(opt = {}, &block) super extend ClassMethods end end module ClassMethods # The sunspot solr_index method is very dependent on ActiveRecord, so # we'll change it to work more efficiently with Mongoid. def solr_index(opt={}) Sunspot.index!(all) end end class InstanceAdapter < Sunspot::Adapters::InstanceAdapter def id @instance.id end end class DataAccessor < Sunspot::Adapters::DataAccessor def load(id) @clazz.find(bson_id(id)) rescue nil end def load_all(ids) @clazz.where(:_id.in => ids.map { |id| bson_id(id) }) end def bson_id(id) if Gem::Version.new(Mongoid::VERSION) >= Gem::Version.new('3') ::Moped::BSON::ObjectId.from_string(id) else ::BSON::ObjectId.from_string(id) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sunspot_mongoid2-0.5.1.7 | lib/sunspot/mongoid2.rb |