Class: MerchantSidekick::Addressable::Address
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- MerchantSidekick::Addressable::Address
- Defined in:
- lib/merchant_sidekick/addressable/address.rb
Overview
Super class of all types of addresses
Constant Summary collapse
- @@street_address_column =
:street
- @@city_column =
:city
- @@postal_code_column =
:postal_code
- @@province_column =
:province
- @@province_code_column =
:province_code
- @@country_column =
:country
- @@country_code_column =
:country_code
- @@gender_column =
:gender
- @@first_name_column =
:first_name
- @@middle_name_column =
false
- @@last_name_column =
:last_name
Class Method Summary collapse
- .content_column_names ⇒ Object
-
.find_address_for_addressable(addressable_str, addressable_id) ⇒ Object
Helper class method to look up all addresss for addressable class name and addressable id.
-
.find_addressable(addressable_str, addressable_id) ⇒ Object
Helper class method to look up a addressable object given the addressable class name and id.
-
.get_binding ⇒ Object
Returns the binding to be used in sub classes of Address.
- .kind ⇒ Object
- .middle_name? ⇒ Boolean
- .province_code? ⇒ Boolean
-
.translate_column_key(in_column) ⇒ Object
TODO not used.
Instance Method Summary collapse
-
#address_line_1 ⇒ Object
(also: #address1)
address_line_1 getter, first line of street_address address1 alias for active merchant.
-
#address_line_1=(addr1) ⇒ Object
(also: #address1=)
setter.
-
#address_line_2 ⇒ Object
(also: #address2)
address_line_2 getter, second line and following of street address2 alias for active merchant.
-
#address_line_2=(addr2) ⇒ Object
(also: #address2=)
setter.
-
#before_save ⇒ Object
This particular call back could be used to save geocordinates if addressable defines :before_save_address method.
-
#content_attributes ⇒ Object
return only attributes with relevant content.
-
#content_column_names ⇒ Object
returns content column name strings.
-
#country ⇒ Object
country getter.
-
#country=(a_country) ⇒ Object
country setter.
-
#country_code ⇒ Object
country code getter.
-
#country_code=(a_country_code) ⇒ Object
country code setter.
- #country_code? ⇒ Boolean
-
#country_or_country_code ⇒ Object
returns either the full country name or the country code (e.g. DE).
-
#first_name ⇒ Object
(also: #firstname)
getter.
-
#first_name=(a_first_name) ⇒ Object
(also: #firstname=)
setter.
- #first_name? ⇒ Boolean
-
#gender ⇒ Object
gender getter.
-
#gender=(a_gender) ⇒ Object
setter.
- #gender? ⇒ Boolean
-
#geokit_attributes ⇒ Object
geokit getter returns a hash of geokit compatible GeoKit::Location attributes.
-
#geokit_attributes=(geo_attr) ⇒ Object
geokit setter.
- #is_gender_female? ⇒ Boolean
- #is_gender_male? ⇒ Boolean
-
#kind ⇒ Object
E.g.
-
#last_name ⇒ Object
(also: #lastname)
getter.
-
#last_name=(a_last_name) ⇒ Object
(also: #lastname=)
setter.
- #last_name? ⇒ Boolean
-
#merchant_attributes(options = {}) ⇒ Object
(also: #to_merchant_attributes)
attributes for active merchant address.
-
#middle_name ⇒ Object
(also: #middlename)
getter.
-
#middle_name=(a_middle_name) ⇒ Object
setter.
- #middle_name? ⇒ Boolean
-
#name ⇒ Object
Concatenates First-, Middle-, last_name to one string.
-
#postal_code ⇒ Object
(also: #zip)
postal_code reader.
-
#postal_code=(a_zip) ⇒ Object
(also: #zip=)
postal_code instead of ZIP.
-
#province ⇒ Object
(also: #state)
province getter.
-
#province=(a_province) ⇒ Object
(also: #state=)
province setter.
-
#province_code ⇒ Object
province code getter.
-
#province_code=(a_province_code) ⇒ Object
province code setter.
- #province_code? ⇒ Boolean
-
#province_or_province_code ⇒ Object
returns the province (as full text) or the province_code (e.g. CA).
-
#salutation(options = {}) ⇒ Object
(also: #salutation_display)
Similar as in Person, only displays like “Mr” or “Prof.
-
#salutation_and_name ⇒ Object
(also: #salutation_and_name_display)
Returns the salutation and name, like “Prof.
-
#street ⇒ Object
(also: #street_address)
getter.
-
#street=(a_street) ⇒ Object
(also: #street_address=)
setter.
-
#to_s ⇒ Object
Writes the address as comma delimited string.
Class Method Details
.content_column_names ⇒ Object
94 95 96 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 94 def content_column_names content_columns.map(&:name) - %w(kind addressable_type addressable_id updated_at created_at) end |
.find_address_for_addressable(addressable_str, addressable_id) ⇒ Object
Helper class method to look up all addresss for addressable class name and addressable id.
71 72 73 74 75 76 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 71 def find_address_for_addressable(addressable_str, addressable_id) find(:all, :conditions => ["addressable_type = ? AND addressable_id = ?", addressable_str, addressable_id], :order => "created_at DESC" ) end |
.find_addressable(addressable_str, addressable_id) ⇒ Object
Helper class method to look up a addressable object given the addressable class name and id
80 81 82 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 80 def find_addressable(addressable_str, addressable_id) addressable_str.constantize.find(addressable_id) end |
.get_binding ⇒ Object
Returns the binding to be used in sub classes of Address
65 66 67 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 65 def get_binding binding end |
.kind ⇒ Object
60 61 62 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 60 def kind name.underscore end |
.middle_name? ⇒ Boolean
287 288 289 290 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 287 def self.middle_name? return true if middle_name_column false end |
.province_code? ⇒ Boolean
207 208 209 210 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 207 def self.province_code? return true if province_code_column false end |
.translate_column_key(in_column) ⇒ Object
TODO not used
85 86 87 88 89 90 91 92 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 85 def translate_column_key(in_column) out_column = class_variable_get("@@#{in_column}") case out_column.class.name when /NilClass/ then in_column when /FalseClass/ then nil else out_column end end |
Instance Method Details
#address_line_1 ⇒ Object Also known as: address1
address_line_1 getter, first line of street_address address1 alias for active merchant
166 167 168 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 166 def address_line_1 (self.street.gsub(/\r/, '').split(/\n/)[0] || self.street).strip if self.street end |
#address_line_1=(addr1) ⇒ Object Also known as: address1=
setter
172 173 174 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 172 def address_line_1=(addr1) self.street = "#{addr1}\n#{address_line_2}" end |
#address_line_2 ⇒ Object Also known as: address2
address_line_2 getter, second line and following of street address2 alias for active merchant
179 180 181 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 179 def address_line_2 self.street.gsub(/\r/, '').split(/\n/)[1] if self.street end |
#address_line_2=(addr2) ⇒ Object Also known as: address2=
setter
185 186 187 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 185 def address_line_2=(addr2) self.street = "#{address_line_1}\n#{addr2}" end |
#before_save ⇒ Object
This particular call back could be used to save geocordinates if addressable defines :before_save_address method
51 52 53 54 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 51 def before_save # trigger before_save_address self.addressable.send(:before_save_address, self) if addressable && addressable.respond_to?(:before_save_address) end |
#content_attributes ⇒ Object
return only attributes with relevant content
385 386 387 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 385 def content_attributes self.attributes.reject {|k,v| !self.content_column_names.include?(k.to_s)}.symbolize_keys end |
#content_column_names ⇒ Object
returns content column name strings
390 391 392 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 390 def content_column_names self.class.content_column_names end |
#country ⇒ Object
country getter
223 224 225 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 223 def country self[country_column] end |
#country=(a_country) ⇒ Object
country setter
228 229 230 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 228 def country=(a_country) self[country_column] = a_country end |
#country_code ⇒ Object
country code getter
233 234 235 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 233 def country_code self[country_code_column] if country_code? end |
#country_code=(a_country_code) ⇒ Object
country code setter
243 244 245 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 243 def country_code=(a_country_code) self[country_code_column] = a_country_code if country_code? end |
#country_code? ⇒ Boolean
237 238 239 240 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 237 def country_code? return true if country_code_column false end |
#country_or_country_code ⇒ Object
returns either the full country name or the country code (e.g. DE)
368 369 370 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 368 def country_or_country_code self.country.to_s.empty? ? self.country_code : self.country end |
#first_name ⇒ Object Also known as: firstname
getter
248 249 250 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 248 def first_name self[first_name_column] if first_name? end |
#first_name=(a_first_name) ⇒ Object Also known as: firstname=
setter
259 260 261 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 259 def first_name=(a_first_name) self[first_name_column] = a_first_name if first_name? end |
#first_name? ⇒ Boolean
253 254 255 256 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 253 def first_name? return true if first_name_column false end |
#gender ⇒ Object
gender getter
322 323 324 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 322 def gender self[gender_column] if gender? end |
#gender=(a_gender) ⇒ Object
setter
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 303 def gender=(a_gender) if gender? if a_gender.is_a? Symbol self[gender_column] = case a_gender when :male then 'm' when :female then 'f' else '' end elsif a_gender.is_a? String self[gender_column] = case a_gender when 'm' then 'm' when 'f' then 'f' else '' end end end end |
#gender? ⇒ Boolean
326 327 328 329 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 326 def gender? return true if gender_column false end |
#geokit_attributes ⇒ Object
geokit getter returns a hash of geokit compatible GeoKit::Location attributes
104 105 106 107 108 109 110 111 112 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 104 def geokit_attributes { :zip => self.postal_code, :city => self.city, :street_address => self.street_address, :state => self.province_code || self.province, :country_code => self.country_code } end |
#geokit_attributes=(geo_attr) ⇒ Object
geokit setter
115 116 117 118 119 120 121 122 123 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 115 def geokit_attributes=(geo_attr) self.attributes = { :postal_code => geo_attr[:zip], :city => geo_attr[:city], :street_address => geo_attr[:street_address], :province_code => geo_attr[:state], :country_code => geo_attr[:country_code] } end |
#is_gender_female? ⇒ Boolean
335 336 337 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 335 def is_gender_female? self.gender == 'f' end |
#is_gender_male? ⇒ Boolean
331 332 333 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 331 def is_gender_male? self.gender == 'm' end |
#kind ⇒ Object
E.g. :billing_addres, :shipping_address
395 396 397 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 395 def kind self.class.kind end |
#last_name ⇒ Object Also known as: lastname
getter
265 266 267 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 265 def last_name self[last_name_column] if last_name? end |
#last_name=(a_last_name) ⇒ Object Also known as: lastname=
setter
276 277 278 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 276 def last_name=(a_last_name) self[last_name_column] = a_last_name if last_name? end |
#last_name? ⇒ Boolean
270 271 272 273 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 270 def last_name? return true if last_name_column false end |
#merchant_attributes(options = {}) ⇒ Object Also known as: to_merchant_attributes
attributes for active merchant address
126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 126 def merchant_attributes(={}) { :name => self.name, :address1 => self.address_line_1, :address2 => self.address_line_2, :city => self.city, :state => (self.province_code || self.province), :country => (self.country_code || self.country), :zip => self.postal_code, :phone => self.phone }.merge() end |
#middle_name ⇒ Object Also known as: middlename
getter
282 283 284 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 282 def middle_name self[middle_name_column] if middle_name? end |
#middle_name=(a_middle_name) ⇒ Object
setter
298 299 300 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 298 def middle_name=(a_middle_name) self[middle_name_column] = a_middle_name if middle_name? end |
#middle_name? ⇒ Boolean
292 293 294 295 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 292 def middle_name? return true if middle_name_column false end |
#name ⇒ Object
Concatenates First-, Middle-, last_name to one string
340 341 342 343 344 345 346 347 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 340 def name result = [] result << first_name result << middle_name result << last_name result = result.compact.map {|m| m.to_s.strip }.reject {|i| i.empty? } return result.join(' ') unless result.empty? end |
#postal_code ⇒ Object Also known as: zip
postal_code reader
153 154 155 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 153 def postal_code self[postal_code_column] end |
#postal_code=(a_zip) ⇒ Object Also known as: zip=
postal_code instead of ZIP
159 160 161 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 159 def postal_code=(a_zip) self[postal_code_column] = a_zip end |
#province ⇒ Object Also known as: state
province getter
191 192 193 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 191 def province self[province_column] end |
#province=(a_province) ⇒ Object Also known as: state=
province setter
197 198 199 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 197 def province=(a_province) self[province_column] = a_province end |
#province_code ⇒ Object
province code getter
203 204 205 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 203 def province_code self[province_code_column] if province_code? end |
#province_code=(a_province_code) ⇒ Object
province code setter
218 219 220 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 218 def province_code=(a_province_code) self[province_code_column] = a_province_code if province_code? end |
#province_code? ⇒ Boolean
212 213 214 215 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 212 def province_code? return true if province_code_column false end |
#province_or_province_code ⇒ Object
returns the province (as full text) or the province_code (e.g. CA)
363 364 365 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 363 def province_or_province_code self.province.to_s.empty? ? self.province_code : self.province end |
#salutation(options = {}) ⇒ Object Also known as: salutation_display
Similar as in Person, only displays like “Mr” or “Prof. Dr.”
350 351 352 353 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 350 def salutation(={}) (self.is_gender_male? ? (return "Mr") : (return "Ms")) if self.gender '' end |
#salutation_and_name ⇒ Object Also known as: salutation_and_name_display
Returns the salutation and name, like “Prof. Dr. Thomas Mann” or “Mr Adam Smith”
357 358 359 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 357 def salutation_and_name "#{salutation} #{name}".strip end |
#street ⇒ Object Also known as: street_address
getter
141 142 143 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 141 def street self[street_address_column] end |
#street=(a_street) ⇒ Object Also known as: street_address=
setter
147 148 149 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 147 def street=(a_street) self[street_address_column] = a_street end |
#to_s ⇒ Object
Writes the address as comma delimited string
373 374 375 376 377 378 379 380 381 382 |
# File 'lib/merchant_sidekick/addressable/address.rb', line 373 def to_s result = [] result << self.address_line_1 result << self.address_line_2 result << self.city result << self.province_or_province_code result << self.postal_code result << self.country_or_country_code result.compact.map {|m| m.to_s.strip }.reject {|i| i.empty? }.join(", ") end |