module Mongokit::Address::ClassMethods
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
Constants
- ADDRESS_FIELDS
Public Instance Methods
address_fields()
click to toggle source
# File lib/mongokit/address.rb, line 68 def address_fields mk_options.get(:address_fields) end
full_address(obj, options = nil)
click to toggle source
# File lib/mongokit/address.rb, line 72 def full_address(obj, options = nil) fields = mk_options.get(:full_address_fields) if options if options[:only] fields = options[:only] elsif options[:except] fields = fields - options[:except] end end fields.map{|f| obj[f]}.compact.join(', ') end
has_address(options = {})
click to toggle source
# File lib/mongokit/address.rb, line 45 def has_address(options = {}) fields = ADDRESS_FIELDS.dup if options[:add] if options[:add].is_a?(Array) options[:add] = options[:add].inject({}){|r, f| r[f] = String; r} else fields.merge!(options[:add]) end end fields = Options.process(fields, options) fields.each do |name, type| field name, type: type end mk_options.tap do |o| o.put(:address_fields, fields.keys) o.put(:full_address_fields, fields.reject{|f, _| f == :latitude || f == :longitude }.keys) end end