65 linhas
1,7 KiB
Ruby
65 linhas
1,7 KiB
Ruby
#---
|
|
# Excerpted from "Agile Web Development with Rails",
|
|
# published by The Pragmatic Bookshelf.
|
|
# Copyrights apply to this code. It may not be used to create training material,
|
|
# courses, books, articles, and the like. Contact us if you are in doubt.
|
|
# We make no guarantees that this code is fit for any purpose.
|
|
# Visit http://www.pragmaticprogrammer.com/titles/rails4 for more book information.
|
|
#---
|
|
$: << File.dirname(__FILE__)
|
|
require "connect"
|
|
require "logger"
|
|
require "pp"
|
|
|
|
#ActiveRecord::Base.logger = Logger.new(STDERR)
|
|
|
|
require "rubygems"
|
|
require "active_record"
|
|
|
|
class LineItem < ActiveRecord::Base
|
|
end
|
|
|
|
LineItem.delete_all
|
|
|
|
LineItem.create(:quantity => 1, :product_id => 27, :order_id => 13, :unit_price => 29.95)
|
|
LineItem.create(:quantity => 2, :unit_price => 29.95)
|
|
LineItem.create(:quantity => 1, :unit_price => 44.95)
|
|
|
|
result = LineItem.find(:first)
|
|
p result.quantity
|
|
p result.unit_price
|
|
|
|
result = LineItem.find_by_sql("select quantity, quantity*unit_price " +
|
|
"from line_items")
|
|
pp result[0].attributes
|
|
|
|
result = LineItem.find_by_sql("select quantity,
|
|
quantity*unit_price as total_price " +
|
|
"from line_items")
|
|
pp result[0].attributes
|
|
|
|
p result[0].total_price
|
|
sales_tax = 0.07
|
|
p result[0].total_price * sales_tax
|
|
|
|
class LineItem < ActiveRecord::Base
|
|
def total_price
|
|
Float(read_attribute("total_price"))
|
|
end
|
|
|
|
CUBITS_TO_INCHES = 2.54
|
|
|
|
def quantity
|
|
read_attribute("quantity") * CUBITS_TO_INCHES
|
|
end
|
|
|
|
def quantity=(inches)
|
|
write_attribute("quantity", Float(inches) / CUBITS_TO_INCHES)
|
|
end
|
|
end
|
|
|
|
p result[0].quantity
|
|
|
|
result[0].quantity = 500
|
|
p result[0].save
|
|
|