DistroPropaganda/code/rails32/e1/ar/attributes.rb
2018-11-24 13:20:20 +01:00

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