Module: Sunspot::Rails::Searchable::ActsAsMethods

Defined in:
lib/sunspot/rails/searchable.rb

Instance Method Summary collapse

Instance Method Details

#searchable(options = {}, &block) ⇒ Object

Makes a class searchable if it is not already, or adds search configuration if it is. Note that the options passed in are only used the first time this method is called for a particular class; so, search should be defined before activating any mixins that extend search configuration.

The block passed into this method is evaluated by the Sunspot.setup method. See the Sunspot documentation for complete information on the functionality provided by that method.

Options (+options+)

:auto_index::

Automatically index models in Solr when they are saved.
Default: true

:auto_remove::

Automatically remove models from the Solr index when they are
destroyed. <b>Setting this option to +false+ is not recommended
</b>(see the README).

:ignore_attribute_changes_of::

Define attributes, that should not trigger a reindex of that
object. Usual suspects are updated_at or counters.

Example

class Post
include Sunspot::Rails::Mongoid
searchable do
  text :title, :body
  string :sort_title do
    title.downcase.sub(/^(an?|the)/, '')
  end
  integer :blog_id
  time :updated_at
end
end


59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/sunspot/rails/searchable.rb', line 59

def searchable(options = {}, &block)
  Sunspot.setup(self, &block)

  extend ClassMethods
  include InstanceMethods

  class_inheritable_hash :sunspot_options
  
  unless options[:auto_index] == false
    before_save :maybe_mark_for_auto_indexing
    after_save :maybe_auto_index
  end

  unless options[:auto_remove] == false
    after_destroy do |searchable|
      searchable.remove_from_index
    end
  end
  self.sunspot_options = options
end

#searchable?Boolean

This is left for compatibility reasons. for Mongoid, the searchable class method gets defined only when the ::Mongoid document is included. At that point, searchable? will return true

Returns

false

Returns:

  • (Boolean)


89
90
91
# File 'lib/sunspot/rails/searchable.rb', line 89

def searchable?
  false
end