Sha256: 4f7d9892c702f0d2babb24008754bc9a37ad3c2162e3ae2d675b725be4d66d5d
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
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 extend Sunspot::Mongoid::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(id) rescue nil end def load_all(ids) @clazz.where(:_id.in => ids.map { |id| BSON::ObjectId.from_string(id) }) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
aq1018-sunspot_mongoid-0.5.0 | lib/sunspot/mongoid.rb |