diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2008-01-18 07:27:03 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-01-18 07:27:03 +0000 |
commit | 43b81d01d0a175c76fea1cdad2484ceb64ca659b (patch) | |
tree | 1afa41720e50b5dd605e77cb6048ad58bb4332e8 /activerecord/test/models/customer.rb | |
parent | 49794485b6629a04d7efe324d7c91c0845dbdc2f (diff) | |
download | rails-43b81d01d0a175c76fea1cdad2484ceb64ca659b.tar.gz rails-43b81d01d0a175c76fea1cdad2484ceb64ca659b.tar.bz2 rails-43b81d01d0a175c76fea1cdad2484ceb64ca659b.zip |
move assets and models
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8657 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test/models/customer.rb')
-rw-r--r-- | activerecord/test/models/customer.rb | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/activerecord/test/models/customer.rb b/activerecord/test/models/customer.rb new file mode 100644 index 0000000000..030bbc6237 --- /dev/null +++ b/activerecord/test/models/customer.rb @@ -0,0 +1,55 @@ +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)) { |balance| balance.to_money } + 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 |