Rails 的 Model 是使用 ActiveRecord 這個 ORM 元件來操作關聯式資料庫,跟一般 ORM 概念差不多,有以下幾點:
- Class <-> 資料表
- Class method <-> 操作資料表
- Object <-> 個別資料 (Row)
- Object method <-> 操作個別資料
- Object attribute <-> 欄位
產生 model 的指令:
rails g model [modelName]
產生的檔案:
invoke active_record
create db/migrate/XXXXXXXXXXXXXX_create_[modelNames].rb
create app/models/[modelName].rb
invoke test_unit
create test/models/[modelName]\_test.rb
create test/fixtures/[modelNames].yml
觀察它產生的檔案如下:
migration
資料庫變動記錄,會有個時間戳記以分辨不同時候的更新 -db/migrate/XXXXXXXXXXXXXX_create_[modelName].rb
model
Model 主檔 -app/models/[modelName].rb
model_test
Model test -test/models/[modelName]_test.rb
fixtures_test
Fixtures -test/fixtures/[modelName].yml
Rails 命名慣例:
Table 名為 Model 名的複數小寫,如果有單字大小寫,會以底線區隔
如果 Rails 英文有錯的話,可以到 config/initializers/inflections.rb
修正
再來可以編輯 migration 檔 (假設建立的 model 叫 news):
class CreateNews < ActiveRecord::Migration |
欄位類型參考:
- integer
- primary_key
- decimal
- float
- boolean
- binary
- string
- text
- date
- time
- datetime
- timestamp
然後執行 rake db:migrate
後,就會產生出資料表了:
$ rake db:migrate |
如果不想用 rails 的命名慣例的話,可以直接修改 app/models/news.rb
檔直接指定:
class News < ActiveRecord::Base |
建好後,可以用 rails console
測試,測完要離開的時候輸入 exit
# 新增 |