目前正在五倍紅寶石學習Ruby on Rails的課程,希望能將上課所學整理出屬於自己的筆記,透過文章整理思緒。因此文章內會有許多部分是參考龍哥的教材。
在還沒上課之前,我一直以為在兩個Model上打上Model 所提供方法,他們的資料庫就能互相調資料了。
但其實不是。
Model 所提供的方法是讓Model之間建立連結,不是資料表之間。
Rails 裡所謂的關係,是指在 Model 層級的關係,主要是透過 Model 所提供的一些方法(例如 has_one、has_many 或 belongs_to)搭配 Rails 的資料表慣例設定主鍵(Primary Key)及外部鍵(Foreign Key),讓這些資料表串在一起。
當User和store之間要建立好關聯,除了要在Model內設定方法外,還在要Store的資料表裡建立user_id的欄位。
因為Model是翻譯員,我們透過Model去跟資料庫要資料。
建立好關係後,要去要資料的話。
Model的User 會去問 Model的Store ,這個時候Store去找他的資料表裡有沒有user_id是user的。
一個 Model 就一定會對到一個資料表
其實有有三種情況。
HABTM(has_and_belongs_to_many),不需要另外新增第三方 Model 即可完成多對多關連。注意,我是說「不需要第三方 Model」,不是「不需要第三方資料表」,畢竟還是要有一個資料表存放雙方的資訊,只是這個資料表因為不重要也不會存取它,所以可以不需要 Model 對應。