Ruby on rails開發從頭來(三十七)- ActiveRecord基礎

 ActiveRecord是Rails提供的一個對象關係映射(ORM)層,從這篇開始,我們來了解Active Record的一些基礎內容,連接數據庫,映射表,訪問數據等。

 

Active Record使用基本的ORM模式:表映射成類,行映射成爲對象,列映射成對象的屬性。與很多大量使用配置的ORM庫不同,Active Record最小化了配置。想象一下,有一個使用Active Record的程序把Mysql數據庫中的orders錶轉換到類,通過制定的ID查找到order,設定order的名稱,然後保存回數據庫:

require "rubygems"

require_gem "activerecord"

ActiveRecord::Base.establish_connection(:adapter => "mysql",

:host => "localhost", :database => "railsdb")

class Order < ActiveRecord::Base

end

order = Order.find(123)

order.name = "Dave Thomas"

order.save

在上面的例子裏不需要任何配置,Active Record爲我們做了這些事情,下面我們來看看ActiveRecord是怎樣工作的。

 

表和類

    當你創建了一個ActiveRecord::Base類的子類,Active Record假定表名是複數的,而類名是單數的,當類名包括多個單詞時,表名被假定爲單詞間帶有下劃線,複數形式不規則,例如:

類名                表名                  類名               表名

Order               orders                LineItem           line_items

TaxAgency           tax_agencies          Person             people

Diagnosis           diagnoses             Quantity           quantities

Batch               batches               Datum              data

默認的,Active Record的表名是複數的,類名是單數的,如果你不太習慣,可以通過設置一個全局標記來禁用它,在config目錄的environment.rb文件中設置:

ActiveRecord::Base.pluralize_table_names = false

單複數規則可以對付大部分情況,對於一些特殊情況,Active Record允許我們覆蓋默認的生成的表名,使用set_table_name命令,例如:

class Sheep < ActiveRecord::Base

set_table_name "sheep" # Not "sheeps"

end

class Order < ActiveRecord::Base

set_table_name "ord_rev99_x" # Wrap a legacy table...

end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章