iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 15
0
Modern Web

Ruby on Rails面試題挑戰系列 第 15

Ruby on Rails面試題挑戰 Day15 - Active Record是什麼?

What is Active Record?
Active Record是什麼?


Active Record是一種設計模式,MVC中的Model就是根據Active Record的模式設計出來的,另外一種常見的說法是Active Record是ORM(object-relational mapping)技術的實作。

ORM是什麼?

ORM(Object Relational Mapping,物件關係對映)是一種技術,將我們程式中的物件對應到資料庫中資料表,可以想像成它幫我們在程式語言中創造一個「虛擬的物件資料庫」。

使用ORM的好處是我們可以在不用寫SQL語法的情況下,寫入或讀取資料庫中的資料。

在Rails中我們寫User.all,Model會幫我們轉成SQL語法select * from users到資料庫(database)的users資料表(table)撈資料,回傳回來後,Model會再將資料包裝成一個個的物件給我們使用,這就是應用到了ORM的技術。

Active Record的好處

  • 表現Model之間的關係
  • 表示出相關Model之間的繼承關係
  • 在存取到資料庫之前驗證資料
  • 使用物件導向的風格來操作資料表

創造 Active Record Models

在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語法的情況下,對資料表進行操作。

參考資料

1.Rubyguide- Active Record

2.Wiki - ORM

3.Wiki - Active Record


上一篇
Ruby on Rails面試題挑戰 Day14 - 什麼是MVC?
下一篇
Ruby on Rails面試題挑戰 Day16 - Rails怎麼管理資料庫狀態?
系列文
Ruby on Rails面試題挑戰30

尚未有邦友留言

立即登入留言