Class: Swisspost::Model::Address
- Inherits:
-
Object
- Object
- Swisspost::Model::Address
- Defined in:
- lib/swisspost/model/address.rb
Constant Summary collapse
- VALIDATOR =
Dry::Validation.Contract do params do # Define all keys and their expected base types required(:first_name).filled(:string) required(:last_name).filled(:string) required(:street).filled(:string) required(:house_number).filled(:string) required(:zip).value(:integer) required(:city).filled(:string) end # Add more specific rules for keys that pass the initial check rule(:zip) do # Swiss ZIP codes are 4 digits, from 1000 to 9999 key.failure('must be a 4-digit Swiss ZIP code') unless value.between?(1000, 9999) end end
Instance Attribute Summary collapse
-
#city ⇒ Object
readonly
Returns the value of attribute city.
-
#first_name ⇒ Object
readonly
Returns the value of attribute first_name.
-
#house_number ⇒ Object
readonly
Returns the value of attribute house_number.
-
#last_name ⇒ Object
readonly
Returns the value of attribute last_name.
-
#street ⇒ Object
readonly
Returns the value of attribute street.
-
#zip ⇒ Object
readonly
Returns the value of attribute zip.
Instance Method Summary collapse
- #full_name ⇒ Object
- #full_street ⇒ Object
-
#initialize(attributes) ⇒ Address
constructor
A new instance of Address.
Constructor Details
#initialize(attributes) ⇒ Address
Returns a new instance of Address.
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/swisspost/model/address.rb', line 26 def initialize(attributes) result = VALIDATOR.call(attributes) raise ValidationError, result.errors.to_h.inspect if result.failure? validated_data = result.to_h @first_name = validated_data[:first_name] @last_name = validated_data[:last_name] @street = validated_data[:street] @house_number = validated_data[:house_number] @zip = validated_data[:zip] @city = validated_data[:city] end |
Instance Attribute Details
#city ⇒ Object (readonly)
Returns the value of attribute city.
6 7 8 |
# File 'lib/swisspost/model/address.rb', line 6 def city @city end |
#first_name ⇒ Object (readonly)
Returns the value of attribute first_name.
6 7 8 |
# File 'lib/swisspost/model/address.rb', line 6 def first_name @first_name end |
#house_number ⇒ Object (readonly)
Returns the value of attribute house_number.
6 7 8 |
# File 'lib/swisspost/model/address.rb', line 6 def house_number @house_number end |
#last_name ⇒ Object (readonly)
Returns the value of attribute last_name.
6 7 8 |
# File 'lib/swisspost/model/address.rb', line 6 def last_name @last_name end |
#street ⇒ Object (readonly)
Returns the value of attribute street.
6 7 8 |
# File 'lib/swisspost/model/address.rb', line 6 def street @street end |
#zip ⇒ Object (readonly)
Returns the value of attribute zip.
6 7 8 |
# File 'lib/swisspost/model/address.rb', line 6 def zip @zip end |
Instance Method Details
#full_name ⇒ Object
39 40 41 |
# File 'lib/swisspost/model/address.rb', line 39 def full_name [@first_name, @last_name].compact.join(" ") end |
#full_street ⇒ Object
43 44 45 |
# File 'lib/swisspost/model/address.rb', line 43 def full_street [@street, @house_number].compact.join(" ") end |