Sha256: 967f0169da953e5b7708f751f3bee5dfc97fba5d704fcd752077c2d97fec048b

Contents?: true

Size: 1.32 KB

Versions: 5

Compression:

Stored size: 1.32 KB

Contents

# Sample spec class
class Address
  include Mongoid::Document

  field :_id, type: String, default: -> { street.try(:parameterize) }

  attr_accessor :mode

  field :address_type
  field :number, type: Integer
  field :street
  field :city
  field :state
  field :post_code
  field :parent_title
  field :services, type: Array
  field :latlng, type: Array
  field :map, type: Hash

  embeds_many :locations, validate: false
  embeds_one :code, validate: false
  embeds_one :target, as: :targetable, validate: false

  embedded_in :addressable, polymorphic: true do
    def extension
      'Testing'
    end

    def doctor?
      title == 'Dr'
    end
  end

  accepts_nested_attributes_for :locations, :code, :target

  belongs_to :account

  scope :without_postcode, where(postcode: nil)
  scope :rodeo, where(street: 'Rodeo Dr') do
    def mansion?
      all? { |address| address.street == 'Rodeo Dr' }
    end
  end

  validates_presence_of :street, on: :update
  validates_format_of :street, with: /\D/, allow_nil: true

  def set_parent=(set = false)
    self.parent_title = addressable.title if set
  end

  def <=>(other)
    street <=> other.street
  end

  class << self
    def california
      where(state: 'CA')
    end

    def homes
      where(address_type: 'Home')
    end

    def streets
      all.map(&:street)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mongoid-geospatial-5.1.0 spec/models/address.rb
mongoid-geospatial-5.0.0 spec/models/address.rb
mongoid-geospatial-4.0.1 spec/models/address.rb
mongoid-geospatial-4.0.0 spec/models/address.rb
mongoid-geospatial-3.9.0 spec/models/address.rb