昨天提到 MVC 三大主角,今天要講的就是其中一員 Model!
Model 可以與資料庫溝通,最主要的作用就是把使用者想要取得的資料或想要寫入資料翻譯給資料庫可以讀懂的語言。
一個專案會有一個資料庫,一個資料庫會有很多資料表,針對不同的主題去做區分。比方說做一個部落格網站,使用者會有一張資料表,紀錄名字、性別、生日、自我介紹。使用者可以寫文章,文章就是另一張資料表,紀錄文章名稱、分類、內容。
資料表與資料表之間是可以互相產生連結的,例如剛剛提到一個使用者可以寫很多文章,所以我可以從某篇文章找到作者是誰,也可以知道某個作者寫了哪些文章。
以下三種是常見的關聯:
一對一
:假設作者只能發一篇文章,而文章也只有一個作者# user.rb
class User < ApplicationRecord
has_one :article
end
# article.rb
class Article < ApplicationRecord
belongs_to :user
end
一對多
:一篇文章只會對應到一個分類,但一個分類會有很多文章# category.rb
class Category < ApplicationRecord
has_many :articles
end
# article.rb
class Article < ApplicationRecord
belongs_to :user
belongs_to :category
end
多對多
:一個人有很多工作,同一個工作也由很多人共同完成# user.rb
class User < ApplicationRecord
has_one :article
has_many :assignments
has_many :works, through: :assignments
end
# work.rb
class Work < ApplicationRecord
has_many :assignments
has_many :users, through: :assignments
end
# assignment.rb
class Assignment < ApplicationRecord
belongs_to :work
belongs_to :user
end
學無止盡,每天都要進步一點點!