Module: SunspotActiveRecord::Searchable::ActsAsMethods

Defined in:
lib/sunspot_activerecord/searchable.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) searchable(options = {}, &block)

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<Boolean>

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

:auto_remove<Boolean>

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

:ignore_attribute_changes_of<Array>

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

:include<Mixed>

Define default ActiveRecord includes, set this to allow ActiveRecord to load required associations when indexing. See ActiveRecord's documentation on eager-loading for examples on how to set this Default: []

Example

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


60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/sunspot_activerecord/searchable.rb', line 60

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

  if searchable?
    sunspot_options[:include].concat(Sunspot::Util::Array(options[:include]))
  else
    extend ClassMethods
    include InstanceMethods

    class_inheritable_hash :sunspot_options

    unless options[:auto_index] == false
      after_save :maybe_auto_index
    end

    unless options[:auto_remove] == false
      after_destroy do |searchable|
        searchable.remove_from_index!
      end
    end
    options[:include] = Sunspot::Util::Array(options[:include])

    self.sunspot_options = options
  end
end

- (Boolean) searchable?

This method is defined on all ActiveRecord::Base subclasses. It is false for classes on which #searchable has not been called, and true for classes on which #searchable has been called.

Returns

false

Returns:

  • (Boolean)


95
96
97
# File 'lib/sunspot_activerecord/searchable.rb', line 95

def searchable?
  false
end