Class: HasVcards::Vcard

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
DirectoryLookup, I18nHelpers
Defined in:
app/models/has_vcards/vcard.rb,
app/models/has_vcards/vcard/directory_address.rb

Defined Under Namespace

Modules: DirectoryAddress, DirectoryLookup

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DirectoryLookup

#address_matches, #directory_filter, #directory_found?, #directory_lookup, #directory_matches, #family_name_match?, #family_name_matches, #filtered_matches, #great_match?, #great_matches, #locality_matches, #map_for_directory, #normalize, #perfect_match?, #perfect_matches

Class Method Details

.by_name(name) ⇒ Object



62
63
64
65
66
# File 'app/models/has_vcards/vcard.rb', line 62

def self.by_name(name)
  where(
    'full_name LIKE :name OR family_name LIKE :name OR given_name LIKE :name OR nickname LIKE :name', name: name
  )
end

Instance Method Details

#abbreviated_nameObject



87
88
89
90
91
# File 'app/models/has_vcards/vcard.rb', line 87

def abbreviated_name
  return read_attribute(:full_name) if read_attribute(:full_name)

  [given_name.try(:first).try(:upcase), family_name].compact.join('. ')
end

#address_linesObject

Helper methods



94
95
96
97
98
99
# File 'app/models/has_vcards/vcard.rb', line 94

def address_lines
  lines = [extended_address, street_address, post_office_box, "#{postal_code} #{locality}"]

  # Only return non-empty lines
  lines.reject(&:blank?).compact.map(&:strip)
end

#address_with_autobuildObject



28
29
30
# File 'app/models/has_vcards/vcard.rb', line 28

def address_with_autobuild
  address_without_autobuild || build_address
end

#contact_linesObject



108
109
110
111
112
113
# File 'app/models/has_vcards/vcard.rb', line 108

def contact_lines
  lines = contacts

  # Only return non-empty lines
  lines.map(&:to_s).reject(&:blank?).compact.map(&:strip)
end

#full_address_linesObject



101
102
103
104
105
106
# File 'app/models/has_vcards/vcard.rb', line 101

def full_address_lines
  lines = [honorific_prefix, full_name] + address_lines

  # Only return non-empty lines
  lines.reject(&:blank?).compact.map(&:strip)
end

#full_nameObject

Convenience accessors



80
81
82
83
84
85
# File 'app/models/has_vcards/vcard.rb', line 80

def full_name
  result = read_attribute(:full_name).presence
  result ||= [ family_name.presence, given_name.presence ].compact.join(' ')

  result
end

#validate_nameObject



71
72
73
74
75
76
77
# File 'app/models/has_vcards/vcard.rb', line 71

def validate_name
  return if full_name.present?

  errors.add(:full_name, "#{t_attr(:full_name, Vcard)} #{I18n.translate('errors.messages.empty')}")
  errors.add(:family_name, "#{t_attr(:family_name, Vcard)} #{I18n.translate('errors.messages.empty')}")
  errors.add(:given_name, "#{t_attr(:given_name, Vcard)} #{I18n.translate('errors.messages.empty')}")
end