module SunspotCell::Setup
Public Class Methods
included(base)
click to toggle source
# File lib/sunspot_cell/setup.rb, line 4 def self.included(base) base.class_eval do alias :sunspot_initialize :initialize unless method_defined?(:sunspot_initialize) def initialize(clazz) @attachment_field_factories, @attachment_field_factories_cache = *Array.new(8) { Hash.new } sunspot_initialize(clazz) end alias :sunspot_all_field_factories :all_field_factories unless method_defined?(:sunspot_all_field_factories) def all_field_factories all_field_factories = sunspot_all_field_factories all_field_factories.concat(attachment_field_factories) all_field_factories end # Add field_factories for fulltext search on attachments # # ==== Parameters # def add_attachment_field_factory(name, options = {}, &block) stored = options[:stored] field_factory = Sunspot::FieldFactory::Static.new(name, Sunspot::Type::AttachmentType.instance, options, &block) @attachment_field_factories[name] = field_factory @attachment_field_factories_cache[field_factory.name] = field_factory if stored @attachment_field_factories_cache[field_factory.name] << field_factory end end def text_fields(field_name) text_field = if field_factory = @text_field_factories_cache[field_name.to_sym] field_factory.build else if field_factory = @attachment_field_factories_cache[field_name.to_sym] field_factory.build else raise( UnrecognizedFieldError, "No text field configured for #{@class_name} with name '#{field_name}'" ) end end [text_field] end # # Return all text fields # def all_text_fields text_fields = text_field_factories.map { |text_field_factory| text_field_factory.build } text_fields.concat(all_attachment_fields) end def all_attachment_fields attachment_field_factories.map { |field_factory| field_factory.build } end # Get the text field_factories associated with this setup as well as all inherited # attachment field_factories # # ==== Returns # # Array:: Collection of all text field_factories associated with this setup # def attachment_field_factories collection_from_inheritable_hash(:attachment_field_factories) end end end
new(clazz)
click to toggle source
# File lib/sunspot_cell/setup.rb, line 7 def initialize(clazz) @attachment_field_factories, @attachment_field_factories_cache = *Array.new(8) { Hash.new } sunspot_initialize(clazz) end
Public Instance Methods
add_attachment_field_factory(name, options = {}, &block)
click to toggle source
Add field_factories for fulltext search on attachments
Parameters¶ ↑
# File lib/sunspot_cell/setup.rb, line 23 def add_attachment_field_factory(name, options = {}, &block) stored = options[:stored] field_factory = Sunspot::FieldFactory::Static.new(name, Sunspot::Type::AttachmentType.instance, options, &block) @attachment_field_factories[name] = field_factory @attachment_field_factories_cache[field_factory.name] = field_factory if stored @attachment_field_factories_cache[field_factory.name] << field_factory end end
all_attachment_fields()
click to toggle source
# File lib/sunspot_cell/setup.rb, line 58 def all_attachment_fields attachment_field_factories.map { |field_factory| field_factory.build } end
all_field_factories()
click to toggle source
# File lib/sunspot_cell/setup.rb, line 13 def all_field_factories all_field_factories = sunspot_all_field_factories all_field_factories.concat(attachment_field_factories) all_field_factories end
all_text_fields()
click to toggle source
Return all text fields
# File lib/sunspot_cell/setup.rb, line 53 def all_text_fields text_fields = text_field_factories.map { |text_field_factory| text_field_factory.build } text_fields.concat(all_attachment_fields) end
attachment_field_factories()
click to toggle source
Get the text field_factories associated with this setup as well as all inherited attachment field_factories
Returns¶ ↑
- Array
-
Collection of all text field_factories associated with this setup
# File lib/sunspot_cell/setup.rb, line 69 def attachment_field_factories collection_from_inheritable_hash(:attachment_field_factories) end
text_fields(field_name)
click to toggle source
# File lib/sunspot_cell/setup.rb, line 33 def text_fields(field_name) text_field = if field_factory = @text_field_factories_cache[field_name.to_sym] field_factory.build else if field_factory = @attachment_field_factories_cache[field_name.to_sym] field_factory.build else raise( UnrecognizedFieldError, "No text field configured for #{@class_name} with name '#{field_name}'" ) end end [text_field] end