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
28 29 30 31 32 33 |
# File 'lib/name_search/name_searchables_concerns.rb', line 28 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
37 38 39 40 41 42 43 |
# File 'lib/name_search/name_searchables_concerns.rb', line 37 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
45 46 47 |
# File 'lib/name_search/name_searchables_concerns.rb', line 45 def name_search_attributes_changed?() (changed & self.class.name_search_attributes.map(&:to_s)).length > 0 end |
#name_search_attributes_names ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/name_search/name_searchables_concerns.rb', line 18 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 |
# File 'lib/name_search/name_searchables_concerns.rb', line 14 def name_searchable_values(force_reload = false) name_searchables(force_reload).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 |