Module: ActsAsAddressable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/acts_as_addressable.rb
Overview
ActsAsAddressable
This module creates .billing_address, .shipping_address and .address methods it tricks a has_many relationship into singleton methods
Mark your model with ‘acts_as_addressable’
there are no additional migrations needed for this module to work.
By default, addresses are NOT required
If you want to validate presence, please mark your model acts_as_addressable :require_billing => true, :require_address => true, :require_shipping => true
Please see app/views/admin/users/_form.html.haml for an example of how to use this in a formtastic form
Defined Under Namespace
Modules: ActiveRecord, ClassMethods
Instance Method Summary
collapse
Instance Method Details
#address ⇒ Object
41
42
43
|
# File 'app/models/concerns/acts_as_addressable.rb', line 41
def address
single_addresses.last
end
|
#address=(address_atts) ⇒ Object
45
46
47
48
49
|
# File 'app/models/concerns/acts_as_addressable.rb', line 45
def address=(address_atts)
add = (address_atts.kind_of?(Effective::Address) ? address_atts.dup : Effective::Address.new(address_atts))
add.category = 'address'
addresses << add if !add.empty? and !(add == address)
end
|
#billing_address ⇒ Object
69
70
71
|
# File 'app/models/concerns/acts_as_addressable.rb', line 69
def billing_address
billing_addresses.last
end
|
#billing_address=(address_atts) ⇒ Object
73
74
75
76
77
|
# File 'app/models/concerns/acts_as_addressable.rb', line 73
def billing_address=(address_atts)
add = (address_atts.kind_of?(Effective::Address) ? address_atts.dup : Effective::Address.new(address_atts))
add.category = 'billing'
addresses << add if !add.empty? and !(add == billing_address)
end
|
#billing_addresses ⇒ Object
65
66
67
|
# File 'app/models/concerns/acts_as_addressable.rb', line 65
def billing_addresses
addresses.select { |address| address.category == 'billing' }
end
|
#primary_address ⇒ Object
83
84
85
|
# File 'app/models/concerns/acts_as_addressable.rb', line 83
def primary_address
primary_addresses.last
end
|
#primary_address=(address_atts) ⇒ Object
87
88
89
90
91
|
# File 'app/models/concerns/acts_as_addressable.rb', line 87
def primary_address=(address_atts)
add = (address_atts.kind_of?(Effective::Address) ? address_atts.dup : Effective::Address.new(address_atts))
add.category = 'primary'
addresses << add if !add.empty? and !(add == primary_address)
end
|
#primary_addresses ⇒ Object
79
80
81
|
# File 'app/models/concerns/acts_as_addressable.rb', line 79
def primary_addresses
addresses.select { |address| address.category == 'primary' }
end
|
#secondary_address ⇒ Object
97
98
99
|
# File 'app/models/concerns/acts_as_addressable.rb', line 97
def secondary_address
secondary_addresses.last
end
|
#secondary_address=(address_atts) ⇒ Object
101
102
103
104
105
|
# File 'app/models/concerns/acts_as_addressable.rb', line 101
def secondary_address=(address_atts)
add = (address_atts.kind_of?(Effective::Address) ? address_atts.dup : Effective::Address.new(address_atts))
add.category = 'secondary'
addresses << add if !add.empty? and !(add == secondary_address)
end
|
#secondary_addresses ⇒ Object
93
94
95
|
# File 'app/models/concerns/acts_as_addressable.rb', line 93
def secondary_addresses
addresses.select { |address| address.category == 'secondary' }
end
|
#shipping_address ⇒ Object
55
56
57
|
# File 'app/models/concerns/acts_as_addressable.rb', line 55
def shipping_address
shipping_addresses.last
end
|
#shipping_address=(address_atts) ⇒ Object
59
60
61
62
63
|
# File 'app/models/concerns/acts_as_addressable.rb', line 59
def shipping_address=(address_atts)
add = (address_atts.kind_of?(Effective::Address) ? address_atts.dup : Effective::Address.new(address_atts))
add.category = 'shipping'
addresses << add if !add.empty? and !(add == shipping_address)
end
|
#shipping_addresses ⇒ Object
51
52
53
|
# File 'app/models/concerns/acts_as_addressable.rb', line 51
def shipping_addresses
addresses.select { |address| address.category == 'shipping' }
end
|
#single_addresses ⇒ Object
37
38
39
|
# File 'app/models/concerns/acts_as_addressable.rb', line 37
def single_addresses
addresses.select { |address| address.category == 'address' }
end
|