Sha256: 566a6df6ac20ddd2cc5691b277b6bc8d4c4add85cf835057b73841114cd8ab08

Contents?: true

Size: 1.76 KB

Versions: 83

Compression:

Stored size: 1.76 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), :converter => Proc.new { |balance| balance.to_money }
  composed_of :gps_location, :allow_nil => true
  composed_of :fullname, :mapping => %w(name to_s), :constructor => Proc.new { |name| Fullname.parse(name) }, :converter => :parse
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

class Fullname
  attr_reader :first, :last

  def self.parse(str)
    return nil unless str
    new(*str.to_s.split)
  end

  def initialize(first, last = nil)
    @first, @last = first, last
  end

  def to_s
    "#{first} #{last.upcase}"
  end
end

Version data entries

83 entries across 80 versions & 17 rubygems

Version Path
p8-castronaut-0.6.1.1 vendor/activerecord/test/models/customer.rb
relevance-castronaut-0.6.0 vendor/activerecord/test/models/customer.rb
relevance-castronaut-0.6.1 vendor/activerecord/test/models/customer.rb
relevance-castronaut-0.7.4 vendor/activerecord/test/models/customer.rb
relevance-castronaut-0.7.5 vendor/activerecord/test/models/customer.rb
activerecord-2.3.18 test/models/customer.rb
activerecord_csi-2.3.5.p8 test/models/customer.rb
activerecord-2.3.17 test/models/customer.rb
activerecord_csi-2.3.5.p7 test/models/customer.rb
activerecord_csi-2.3.5.p6 test/models/customer.rb
activerecord-2.3.16 test/models/customer.rb
activerecord-2.3.15 test/models/customer.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/activerecord-2.3.14/test/models/customer.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/activerecord-2.3.12/test/models/customer.rb
activerecord-2.3.14 test/models/customer.rb
kajam-1.0.3.rc2 vendor/rails/activerecord/test/models/customer.rb
activerecord-2.3.12 test/models/customer.rb
radiant-1.0.0.rc2 vendor/rails/activerecord/test/models/customer.rb
radiant-1.0.0.rc1 vendor/rails/activerecord/test/models/customer.rb
webroar-0.5.0 src/admin_panel/vendor/rails/activerecord/test/models/customer.rb