程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Ruby on rails開發從頭來(三十七)- ActiveRecord基礎

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

編輯:關於JAVA

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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved