What is Active Record?
Active Record是什麼?
Active Record是一種設計模式,MVC中的Model就是根據Active Record的模式設計出來的,另外一種常見的說法是Active Record是ORM(object-relational mapping)技術的實作。
ORM(Object Relational Mapping,物件關係對映)是一種技術,將我們程式中的物件對應到資料庫中資料表,可以想像成它幫我們在程式語言中創造一個「虛擬的物件資料庫」。
使用ORM的好處是我們可以在不用寫SQL語法的情況下,寫入或讀取資料庫中的資料。
在Rails中我們寫User.all
,Model會幫我們轉成SQL語法select * from users
到資料庫(database)的users資料表(table)撈資料,回傳回來後,Model會再將資料包裝成一個個的物件給我們使用,這就是應用到了ORM的技術。
在Rails中要創造Active Record Model很簡單,只要繼承ApplicationRecord
就好,舉下方的User
為例,根據Rails的慣例,這個Class會對應到資料庫的users
資料表。
class User < ApplicationRecord
end
Active Record自動創造了CRUD,也就是Create、Read、Update、Delete這些基本方法來讓應用程式更好的讀取或寫入資料。
假設有一個modelUser
有其屬性name
,那create方法會創造一個物件,同時也寫入一筆資料在users資料表裡。
User.create(name: "David")
基本上Rails內model就是根據Active Record模式所設計的產物。
Active Record的基本介紹就先告一段落,有關於驗證、migration或其他CRUD方法的深入,概念不太好懂,接下來幾天會挑幾個與其相關的面試題再深入了解Active Record。
Active Record是一種設計模式,MVC中的Model就是根據Active Record的模式設計出來的,另外一種常見的說法是Active Record是ORM(object-relational mapping)技術的實作。
透過這種ORM技術,我們可以連結物件與資料庫中的資料表,可以在不寫SQL語法的情況下,對資料表進行操作。