Class: ActiveRecord::Searchable::Configuration
- Inherits:
-
Object
- Object
- ActiveRecord::Searchable::Configuration
- Defined in:
- lib/activerecord/searchable/configuration.rb
Instance Attribute Summary collapse
-
#fields ⇒ Object
readonly
Returns the value of attribute fields.
-
#model_class ⇒ Object
readonly
Returns the value of attribute model_class.
Instance Method Summary collapse
- #extract_content(record, field) ⇒ Object
- #field(name, weight: 1.0, via: nil) ⇒ Object
- #field_names ⇒ Object
-
#initialize(model_class) ⇒ Configuration
constructor
A new instance of Configuration.
- #search_table_name ⇒ Object
- #weights ⇒ Object
Constructor Details
#initialize(model_class) ⇒ Configuration
Returns a new instance of Configuration.
8 9 10 11 |
# File 'lib/activerecord/searchable/configuration.rb', line 8 def initialize(model_class) @model_class = model_class @fields = [] end |
Instance Attribute Details
#fields ⇒ Object (readonly)
Returns the value of attribute fields.
6 7 8 |
# File 'lib/activerecord/searchable/configuration.rb', line 6 def fields @fields end |
#model_class ⇒ Object (readonly)
Returns the value of attribute model_class.
6 7 8 |
# File 'lib/activerecord/searchable/configuration.rb', line 6 def model_class @model_class end |
Instance Method Details
#extract_content(record, field) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/activerecord/searchable/configuration.rb', line 29 def extract_content(record, field) method_name = field.via || field.name value = record.public_send(method_name) value.to_s rescue NoMethodError => e raise ArgumentError, "Cannot extract content for field '#{field.name}': #{e.message}" end |
#field(name, weight: 1.0, via: nil) ⇒ Object
13 14 15 |
# File 'lib/activerecord/searchable/configuration.rb', line 13 def field(name, weight: 1.0, via: nil) @fields << Field.new(name: name, weight: weight, via: via) end |
#field_names ⇒ Object
21 22 23 |
# File 'lib/activerecord/searchable/configuration.rb', line 21 def field_names fields.map(&:name) end |
#search_table_name ⇒ Object
17 18 19 |
# File 'lib/activerecord/searchable/configuration.rb', line 17 def search_table_name "#{model_class.table_name.singularize}_search_index" end |
#weights ⇒ Object
25 26 27 |
# File 'lib/activerecord/searchable/configuration.rb', line 25 def weights fields.map(&:weight) end |