Class: NameSearch::NickNameFamily
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- NameSearch::NickNameFamily
- Defined in:
- lib/name_search/models/nick_name_family.rb
Class Method Summary collapse
- .create_family(*nick_names) ⇒ Object
- .other_families(first_name, names) ⇒ Object
- .process_file_line(line) ⇒ Object
- .should_create_new_family?(first_name, names) ⇒ Boolean
- .update_families_from_file(file_name) ⇒ Object
Class Method Details
.create_family(*nick_names) ⇒ Object
8 9 10 11 12 13 14 15 |
# File 'lib/name_search/models/nick_name_family.rb', line 8 def self.create_family(*nick_names) family = NickNameFamily.create scrubbed_names = nick_names.flatten.map{|x| Name.scrub_and_split_name(x)}.flatten scrubbed_names.each do |name| family.names << Name.find_or_create_by(value: name) end family end |
.other_families(first_name, names) ⇒ Object
46 47 48 |
# File 'lib/name_search/models/nick_name_family.rb', line 46 def self.other_families(first_name, names) names.map(&:nick_name_family_ids).flatten.uniq - first_name.nick_name_family_ids end |
.process_file_line(line) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/name_search/models/nick_name_family.rb', line 23 def self.process_file_line(line) scrubbed_name_values = line.split.map{|x| Name.scrub_and_split_name(x)}.flatten names = Name.where(:value => scrubbed_name_values).to_a first_name = names.find{|x| x.value == scrubbed_name_values.first} if should_create_new_family?(first_name, names) family = NickNameFamily.create scrubbed_name_values.each do |name| family.names << Name.find_or_create_by(value: name) end else scrubbed_name_values.from(1).each do |name| first_name.nick_name_families.first.names << Name.find_or_create_by(value: name) end end end |
.should_create_new_family?(first_name, names) ⇒ Boolean
40 41 42 43 44 |
# File 'lib/name_search/models/nick_name_family.rb', line 40 def self.should_create_new_family?(first_name, names) first_name.nil? || first_name.nick_name_families.length == 0 || other_families(first_name, names).length > 0 end |
.update_families_from_file(file_name) ⇒ Object
17 18 19 |
# File 'lib/name_search/models/nick_name_family.rb', line 17 def self.update_families_from_file(file_name) File.open(file_name).each_line{|line| process_file_line(line)} end |