module ARIndexer::Model::ClassMethods::InstanceMethods

Public Instance Methods

index_associations(cleanup = false) click to toggle source
# File lib/ar_indexer/has_reverse_index.rb, line 66
def index_associations(cleanup = false)
  values_to_index = ar_indexer_get_indexable_values([:associations])

  values_to_index.each do |field_name, value|
    Indexer.index_string(self.class.to_s.split('::').last, self.id, field_name, value, cleanup)
  end
end
index_fields(cleanup = false) click to toggle source
# File lib/ar_indexer/has_reverse_index.rb, line 58
def index_fields(cleanup = false)
  values_to_index = ar_indexer_get_indexable_values([:fields])

  values_to_index.each do |field_name, value|
    Indexer.index_string(self.class.to_s.split('::').last, self.id, field_name, value, cleanup)
  end
end
index_object(cleanup = false) click to toggle source
# File lib/ar_indexer/has_reverse_index.rb, line 50
def index_object(cleanup = false)
  values_to_index = ar_indexer_get_indexable_values

  values_to_index.each do |field_name, value|
    Indexer.index_string(self.class.to_s.split('::').last, self.id, field_name, value, cleanup)
  end
end

Private Instance Methods

ar_indexer_gather_column_values(columns) click to toggle source
# File lib/ar_indexer/has_reverse_index.rb, line 98
def ar_indexer_gather_column_values(columns)
  column_values = {}

  columns.each do |column|
    value = self.read_attribute(column)

    if value.is_a?(String)
      column_values[column] = value unless value.empty?
    end
  end

  return column_values
end
ar_indexer_get_indexable_values(index = [:fields, :associations]) click to toggle source
# File lib/ar_indexer/has_reverse_index.rb, line 76
def ar_indexer_get_indexable_values(index = [:fields, :associations])
  values_to_index = {}

  if index.include?(:fields)
    ari_fields = self.class.ari_configuration[:fields].map{|f| f.to_s}
    indexed_columns = self.class.ari_configuration[:fields].empty? ? self.class.column_names : (self.class.column_names & ari_fields)
    values_to_index.merge!(ar_indexer_gather_column_values(indexed_columns))
  end

  if index.include?(:associations) and !self.class.ari_configuration[:associations].empty?
    self.class.ari_configuration[:associations].each do |association_name, access_function|
      value = access_function.call(self)

      if value.is_a?(String)
        values_to_index[association_name.to_s] = value unless value.empty?
      end
    end
  end

  return values_to_index
end
ar_indexer_on_create() click to toggle source
# File lib/ar_indexer/has_reverse_index.rb, line 112
def ar_indexer_on_create
  to_index = self.class.ari_configuration[:index_on_create]

  if to_index == []
    self.index_object(false)
  else
    self.index_fields(false) if to_index.include? :fields
    self.index_associations(false) if to_index.include? :associations
  end
end
ar_indexer_on_destroy() click to toggle source
# File lib/ar_indexer/has_reverse_index.rb, line 134
def ar_indexer_on_destroy
  Indexer.remove_index_id(self.class.to_s, self.id)
end
ar_indexer_on_update() click to toggle source
# File lib/ar_indexer/has_reverse_index.rb, line 123
def ar_indexer_on_update
  to_index = self.class.ari_configuration[:index_on_update]

  if to_index == []
    self.index_object(true)
  else
    self.index_fields(true) if to_index.include? :fields
    self.index_associations(true) if to_index.include? :associations
  end
end