Class: ActiveRecord::Searchable::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/activerecord/searchable/configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#fieldsObject (readonly)

Returns the value of attribute fields.



6
7
8
# File 'lib/activerecord/searchable/configuration.rb', line 6

def fields
  @fields
end

#model_classObject (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_namesObject



21
22
23
# File 'lib/activerecord/searchable/configuration.rb', line 21

def field_names
  fields.map(&:name)
end

#search_table_nameObject



17
18
19
# File 'lib/activerecord/searchable/configuration.rb', line 17

def search_table_name
  "#{model_class.table_name.singularize}_search_index"
end

#weightsObject



25
26
27
# File 'lib/activerecord/searchable/configuration.rb', line 25

def weights
  fields.map(&:weight)
end