Monday, May 12, 2008

Rails: AcriveRecord::basis

ORM
Create
  order = Order.new(:name => "Kyo Endo", :age => 45)
  order.save
    or
  order = Order.create(...)
  orders = Order.create([
    {:name => "Kyo Endo", :age => 45},
    {:name => "Keyes Jarrett", :age => 20}
    ])
Read
  orders = Order.find(:all, :conditions => params[:order])
  orders = Order.find(:all, :conditions => ["name = :name and pey_type = :pay_type", params[:order])
  orders = Order.find(:all, :conditions => ["name like ?", params[:name]+"%"])
  orders = Order.find(:all, :conditions => "name='Dave'",
                      :order => "pay_type, shipped_at DESC",
                      :limit => 10)
  order = Order.find(:first, :conditions => "name = 'Kyo'",
                     :order => "id DESC")
  order = Order.find_by_sql("select line_items.* from line_items, orders " + "where order_id = orders.id" + "and orders.name = 'Kyo Endo'")
  
  average = Order.average(:amount)
  total = Order.sum(:amount)
  number = Order.count
  minimum = Order.minimum :amout, :conditions => "amout > 20"
  
  order = Order.find_by_name("keyes")
  order = Order.find_all_by_email(params['email'])
  user = User.find_by_name_and_password(name, pw)
Update
  order = Order.find(123)
  order.name = "Fred"
  order.save
  
  order.update_attribute(:name, "Barney")
  order.update_attributes(:name => "Barney", :email => "barney@bedrock.com")
Delete
  Order.delete(123)
  Order.delete([12,13,15])
  Product.delete_all(["preice > ?", @expensive_price])
  
  order.destroy
  Order.destroy_all(["shipped_at < ?", 30.days.ago])
Aggregation
  composed_of :name to Customer Class
  customer = Customer.find(123)
  puts customer.name.first
  

No comments: