ActiveRecord - 資料表關連 part 1
把資料表的『一筆資料』包裝成一個「物件」,並可在物件上增加額外的邏輯操作,讓資料的存取更便利。
到這裡就會有問題:那 Model 到底是什麼?
Model = 依照 Active Record 模式設計的產物
這邊就要提到一個觀念:
- ORM = Object Relational Mapping (物件關聯對映)
- 目的:簡化資料庫操作語法
那又會有一個問題:
用 ORM 就不需要學 SQL 了?
當然不是!!!
答案:
ActiveRecord 是一種 ORM 的設計框架,目的是希望透過物件的方式來簡化操作資料庫的語法。
慣例優於設定:
Convention over Configuration(CoC)
- 慣例 = 可以少寫不必要的程式碼
換句話說:學習Rails,等於是在學習Rails的慣例
慣例一:
- Model:大寫、單數
- Table:小寫、複數
慣例二:
- 每個表格預設有一個叫做 id 的流水編號欄位
- 在 migration 裡預設會有個 timestamps:
timestamps 會轉變成created_at
跟update_at
這兩個時間欄位
在資料新增或更新的時候會自動寫入當下時間
答案:
流水編號(id):當資料在新增的時候,它會自動跳號去「累加」。
如果自己手動增加:會有個風險,假設你要手動把某筆 id 是最大的資料取出,手動+1後再存回去資料庫,但是你取出的同時有另外的人也剛好取出同一筆資料,這樣你們兩者回傳回去資料庫的 id 會產生一樣的情況。
為了避免發生這種情況,盡量不要自己手動去做,都交給資料庫系統本身處理就好。
答案:
其實是在 Rails 專案裡面有個檔案 config/initializers/inflection.rb
第6、9、11行解開註解
在第9行去修改它
打開 rails console畫面檢查結果
檔名更類別可以對應:
參考來源:為你自己學 Ruby on Rails (https://railsbook.tw/)