Module: Mongokit::Address::ClassMethods
- Includes:
- Options::Store
- Defined in:
- lib/mongokit/address.rb
Overview
Example
class User
include Mongoid::Document
mongokit :address
has_address
# OR
# has_address(except: [:latitude, :longitude])
# has_address(replace: {address_1: :street_1, address_2: :street_2})
end
user = User.create({
address_1: 'Studio 103',
address_2: 'The Business Centre',
street: '61 Wellfield Road',
city: 'Roath',
state: 'Cardiff',
postal_code: 'CF24 3DG',
country: 'England'
})
user.full_address # Studio 103, The Business Centre, 61 Wellfield Road, Roath, Cardiff, CF24 3DG, England
Constant Summary collapse
- ADDRESS_FIELDS =
{ address_1: String, address_2: String, street: String, city: String, state: String, postal_code: String, country: String, latitude: Float, longitude: Float }.freeze
Instance Method Summary collapse
- #address_fields ⇒ Object
- #full_address(obj, options = nil) ⇒ Object
- #has_address(options = {}) ⇒ Object
Methods included from Options::Store
Instance Method Details
#address_fields ⇒ Object
68 69 70 |
# File 'lib/mongokit/address.rb', line 68 def address_fields .get(:address_fields) end |
#full_address(obj, options = nil) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/mongokit/address.rb', line 72 def full_address(obj, = nil) fields = .get(:full_address_fields) if if [:only] fields = [:only] elsif [:except] fields = fields - [:except] end end fields.map{|f| obj[f]}.compact.join(', ') end |
#has_address(options = {}) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/mongokit/address.rb', line 45 def has_address( = {}) fields = ADDRESS_FIELDS.dup if [:add] if [:add].is_a?(Array) [:add] = [:add].inject({}){|r, f| r[f] = String; r} else fields.merge!([:add]) end end fields = Options.process(fields, ) fields.each do |name, type| field name, type: type end .tap do |o| o.put(:address_fields, fields.keys) o.put(:full_address_fields, fields.reject{|f, _| f == :latitude || f == :longitude }.keys) end end |