Class: Sunspot::Field
- Inherits:
-
Object
- Object
- Sunspot::Field
- Defined in:
- lib/sunspot/field.rb
Overview
:nodoc:
Direct Known Subclasses
Instance Attribute Summary collapse
-
#attributes ⇒ Object
Returns the value of attribute attributes.
-
#name ⇒ Object
The public-facing name of the field.
-
#reference ⇒ Object
Model class that the value of this field refers to.
-
#type ⇒ Object
The Type of the field.
Instance Method Summary collapse
-
#cast(value) ⇒ Object
Cast the value into the appropriate Ruby class for the field’s type.
-
#indexed_name ⇒ Object
Name with which this field is indexed internally.
-
#initialize(name, type) ⇒ Field
constructor
A new instance of Field.
-
#multiple? ⇒ Boolean
Whether this field accepts multiple values.
-
#to_indexed(value) ⇒ Object
Convert a value to its representation for Solr indexing.
Constructor Details
#initialize(name, type) ⇒ Field
Returns a new instance of Field.
10 11 12 13 |
# File 'lib/sunspot/field.rb', line 10 def initialize(name, type) #:nodoc @name, @type = name.to_sym, type @attributes = {} end |
Instance Attribute Details
#attributes ⇒ Object
Returns the value of attribute attributes.
6 7 8 |
# File 'lib/sunspot/field.rb', line 6 def attributes @attributes end |
#name ⇒ Object
The public-facing name of the field
3 4 5 |
# File 'lib/sunspot/field.rb', line 3 def name @name end |
#reference ⇒ Object
Model class that the value of this field refers to
5 6 7 |
# File 'lib/sunspot/field.rb', line 5 def reference @reference end |
#type ⇒ Object
The Type of the field
4 5 6 |
# File 'lib/sunspot/field.rb', line 4 def type @type end |
Instance Method Details
#cast(value) ⇒ Object
Cast the value into the appropriate Ruby class for the field’s type
Parameters
- value<String>
-
Solr’s representation of the value
Returns
- Object
-
The cast value
53 54 55 |
# File 'lib/sunspot/field.rb', line 53 def cast(value) @type.cast(value) end |
#indexed_name ⇒ Object
Name with which this field is indexed internally. Based on public name and type.
Returns
- String
-
Internal name of the field
65 66 67 |
# File 'lib/sunspot/field.rb', line 65 def indexed_name @type.indexed_name(@name) end |
#multiple? ⇒ Boolean
Whether this field accepts multiple values.
Returns
- Boolean
-
True if this field accepts multiple values.
76 77 78 |
# File 'lib/sunspot/field.rb', line 76 def multiple? !!@multiple end |
#to_indexed(value) ⇒ Object
Convert a value to its representation for Solr indexing. This delegates to the #to_indexed method on the field’s type.
Parameters
- value<Object>
-
Value to convert to Solr representation
Returns
- String
-
Solr representation of the object
Raises
- ArgumentError
-
the value is an array, but this field does not allow multiple values
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/sunspot/field.rb', line 31 def to_indexed(value) if value.is_a? Array if @multiple value.map { |val| to_indexed(val) } else raise ArgumentError, "#{name} is not a multiple-value field, so it cannot index values #{value.inspect}" end else @type.to_indexed(value) end end |