ruby中的CRUD以及資料的組織形式
1CRUD
C: .save .create()
R: find(:first) 查詢第一條
find(:all, conditions=>”name=’ 值 ’ and pay_type=’ 值 ’”) 給定屬性查詢
通過 hash 集合給定屬性值
name=params[:name]
pay_type=params[:pay_type]
find(:all, conditions=>[“name=:name and pay_type=:pay_type”,
{:pay_type=>pay_type, :name=>name}])
通過 hash 引數給定屬性值
find(:all, conditions=>params[:order])
find 方法實為對 sql 語句的轉換
:conditions =>”name=’Dave’”
給定的是 sql 語句中 where 的查詢條件
:order =>”pay_type,shipped_at DESC”
指定排序的條件
:limit =>”10”
指定限制返回的記錄數。與 :order 引數同時使用時,返回查詢結果保持一致
:offset=>”20”
指定查詢資料中的第幾條記錄之後被讀取出來
:select=>
指定要查詢的內容欄位
:redonly=>true
Find 方法返回的 ActiveRecord 物件不能存回資料庫
:from=> 表名
:group=> ”shu” 以書來分組
注:通過分組查詢出來的資料是陣列型並非 Hash 型的
U : update_attribute(: 屬性名,“值” )
2 獲取欄位統計資訊
Order.average(: 欄位名稱 ) 計算 order 資料中給定欄位的平均值
Order.maximum(: 欄位名稱 ) 計算 order
Order.minimum(: 欄位名稱 ) 計算 order 中給定欄位的最小值
Order.sum(: 欄位名稱 ) 計算 order 中給定欄位的和
Order.count 計算 order 中資料的總數
所有這些函式與 find 函式類似接受 hash 引數
:conditions
:limit
:order
:having
:select
:distinct
:group (group 常與 limit 和 order 一同使用 )
3 對於結構化資料的存取
若將物件中的一物件屬性(如陣列物件)儲存入資料庫為某種型別的(多數為字串行或 text 型)
當在模型中宣告 serialize :欄位名時,取出資料時仍保持存前資料的型別
如將字串存入資料庫則以 string 形式儲存,取出時仍然是個陣列
注:陣列物件以 YAML 格式存入資料庫,若在 ruby 應用外使用則,則不能解析此格式
4 物件聚合的存取
1 首先建立物件內的聚合類:必須滿足有一個構造器,該類不能繼承 ActiveRecord( 屬性應該以 attr_accessor :……) ,引數必須對應資料庫欄位
2 在外層物件上建立鉤子:該鉤子建立與內層物件的關係,及內層物件與資料庫的對映關係 composed_of :attr_name , :class_name=>Name , :mapping=>[[:first_name,:first],[: 表字段,物件欄位 ] , []……]
注意:引數 :attr_name 代表的是聚合物件作為外層物件的屬性名(必須有)
:class_name 代表聚合物件的類名(如果外層物件屬性與聚合類名相同則無需此引數)
:mapping 當資料庫欄位與聚合類名不一樣時使用此引數