Module: NameSearch::NameSearchablesConcerns

Defined in:
lib/name_search/name_searchables_concerns.rb

Instance Method Summary collapse

Instance Method Details

#create_new_name_searchables(names) ⇒ Object



31
32
33
34
35
36
# File 'lib/name_search/name_searchables_concerns.rb', line 31

def create_new_name_searchables(names)
  names_to_add = names - name_searchable_values
  names_to_add.each do |name|
    name_searchables.create name: NameSearch::Name.find_or_create_by(value: name)
  end
end

#destroy_orphaned_name_searchables(names) ⇒ Object

Destroys name_searchable values that used to exist but don’t exist any longer Example: ‘Jen York’ changes to ‘Jen Yoder’, then ‘york’ would be destroyed



40
41
42
43
44
45
46
# File 'lib/name_search/name_searchables_concerns.rb', line 40

def destroy_orphaned_name_searchables(names)
  orphaned_names = name_searchable_values - names
  orphaned_names.each do |orphan_name|
    searchable = name_searchables.select{|x| x.name.value == orphan_name}.first
    searchable.destroy if searchable.present?
  end
end

#name_search_attributes_changed?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/name_search/name_searchables_concerns.rb', line 48

def name_search_attributes_changed?()
  (saved_changes.keys & self.class.name_search_attributes.map(&:to_s)).length > 0
end

#name_search_attributes_namesObject



21
22
23
24
25
26
27
28
29
# File 'lib/name_search/name_searchables_concerns.rb', line 21

def name_search_attributes_names()
  names = []
  attributes = self.class.name_search_attributes
  attributes.each do |att|
    value = self.send(att)
    names.concat(NameSearch::Name.scrub_and_split_name(value))
  end
  names
end

#name_searchable_values(force_reload = false) ⇒ Object



14
15
16
17
18
19
# File 'lib/name_search/name_searchables_concerns.rb', line 14

def name_searchable_values(force_reload = false)
  if force_reload
    name_searchables.reload
  end
  name_searchables.map{|x| x.name.value}
end

#sync_name_searchablesObject



3
4
5
6
# File 'lib/name_search/name_searchables_concerns.rb', line 3

def sync_name_searchables
  return unless name_search_attributes_changed?
  update_name_searchables
end

#update_name_searchablesObject



8
9
10
11
12
# File 'lib/name_search/name_searchables_concerns.rb', line 8

def update_name_searchables
  names = name_search_attributes_names
  create_new_name_searchables(names)
  destroy_orphaned_name_searchables(names)
end