Module: NameSearch::NameSearchablesConcerns
- Defined in:
- lib/name_search/name_searchables_concerns.rb
Instance Method Summary collapse
- #create_new_name_searchables(names) ⇒ Object
-
#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.
- #name_search_attributes_changed? ⇒ Boolean
- #name_search_attributes_names ⇒ Object
- #name_searchable_values(force_reload = false) ⇒ Object
- #sync_name_searchables ⇒ Object
- #update_name_searchables ⇒ Object
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
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_names ⇒ Object
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_searchables ⇒ Object
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_searchables ⇒ Object
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 |