1. 程式人生 > >ruby中的CRUD以及資料的組織形式

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=>

”name,pay_type”

指定要查詢的內容欄位

: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 當資料庫欄位與聚合類名不一樣時使用此引數