Sha256: b6eb40c481d81859584d8fe5c02da793931679524b1808ddc66636480ffaf3e3

Contents?: true

Size: 1.35 KB

Versions: 71

Compression:

Stored size: 1.35 KB

Contents

class Customer < ActiveRecord::Base
  composed_of :address, :mapping => [ %w(address_street street), %w(address_city city), %w(address_country country) ], :allow_nil => true
  composed_of :balance, :class_name => "Money", :mapping => %w(balance amount)
  composed_of :gps_location, :allow_nil => true
end

class Address
  attr_reader :street, :city, :country

  def initialize(street, city, country)
    @street, @city, @country = street, city, country
  end
  
  def close_to?(other_address)
    city == other_address.city && country == other_address.country
  end

  def ==(other)
    other.is_a?(self.class) && other.street == street && other.city == city && other.country == country
  end  
end

class Money
  attr_reader :amount, :currency
  
  EXCHANGE_RATES = { "USD_TO_DKK" => 6, "DKK_TO_USD" => 0.6 }
  
  def initialize(amount, currency = "USD")
    @amount, @currency = amount, currency
  end
  
  def exchange_to(other_currency)
    Money.new((amount * EXCHANGE_RATES["#{currency}_TO_#{other_currency}"]).floor, other_currency)
  end
end

class GpsLocation
  attr_reader :gps_location
  
  def initialize(gps_location)
    @gps_location = gps_location
  end
  
  def latitude
    gps_location.split("x").first
  end
  
  def longitude
    gps_location.split("x").last
  end

  def ==(other)
    self.latitude == other.latitude && self.longitude == other.longitude
  end
end

Version data entries

71 entries across 71 versions & 5 rubygems

Version Path
activerecord-1.15.0 test/fixtures/customer.rb
activerecord-1.15.3 test/fixtures/customer.rb
activerecord-1.15.1 test/fixtures/customer.rb
activerecord-1.15.4 test/fixtures/customer.rb
activerecord-1.15.2 test/fixtures/customer.rb
activerecord-1.15.6 test/fixtures/customer.rb
activerecord-1.15.5 test/fixtures/customer.rb
activerecord_authorails-1.0.0 test/fixtures/customer.rb
backlog-0.0.0 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.0.1 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.0.2 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.0.4 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.0.5 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.1.0 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.1.1 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.1.2 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.2.0 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.2.1 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.3.0 vendor/rails/activerecord/test/fixtures/customer.rb
backlog-0.3.1 vendor/rails/activerecord/test/fixtures/customer.rb