ActiveRecord 透過資料庫適配器抽象連線細節,支援多種資料庫系統。
establish_connectionActiveRecord::Base.establish_connection( :adapter => "mysql", :host => "dbserver.com", :database => "railsdb", :username => "railsuser", :password => "railspw" )
| 資料庫 | 適配器名稱 | 備註 |
|---|---|---|
| MySQL | mysql | |
| PostgreSQL | postgresql | |
| SQLite | sqlite3 | |
| Oracle | oci | 注意適配器名為 oci |
| SQL Server | sqlserver | |
| DB2 | db2 |
各適配器參數略有差異,常用鍵::adapter、:host、:database、:username、:password、:port、:socket 等。
所有模型繼承 ActiveRecord::Base 共享連線。特定模型可獨立設定:
ActiveRecord::Base.establish_connection(:adapter => "mysql", :database => "online", ...) class LineItem < ActiveRecord::Base; end class Order < ActiveRecord::Base; end class Customer < ActiveRecord::Base establish_connection(:adapter => "mysql", :database => "backend", ...) end
實務上不在程式碼寫死連線參數,而是使用 config/database.yml:
establish_connection(:production) 可直接引用 YAML 區段名