iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
2

Model 之間的關連,主要有「一對一」、「一對多」及「多對多」這三種。以下用餐廳的例子舉例:

  • 一對一:一位使用者可以開一家飲料店。
  • 一對多:每家飲料店可以賣很多及不同的飲料。
  • 多對多:每家飲料店除了可以賣很多種飲料之外,每種飲料也可以在很多家飲料店販售。

關連:一對一
這裡舉的例子是一位使用者可以開一家飲料店。

第一步,我們先建立 Model:
Model 名稱 User。
https://ithelp.ithome.com.tw/upload/images/20190916/20112656EwVC8bFRpP.png

Model 名稱 DrinkStore。
https://ithelp.ithome.com.tw/upload/images/20190916/201126568klyHHGTHy.png

各別使用 Rails 的 Model 產生器來產生 User & DrinkStore Model,請在終端機輸入:
rails g model User
rails g model DrinkStore

user_id 這個欄位的型態是數字,主要的用途是用來對應到 User Model 的 id 欄位,又稱它叫外部鍵 FK。要特別注意的是並不是加上這個之後就會有關連!

第二步,在兩個 Model 之間設定關聯:
在 User & DrinkStore,分別加上 has_one 與 belongs_to 語法。

# 檔案:app/models/user.rb
class User < ApplicationRecord
  has_one :drink_store
end
# 檔案:app/models/drink_store.rb
class DrinkStore < ApplicationRecord
  belongs_to :user
end

這時候以 User 的角度來看,就會有以下方法可以用:

  • drink_store
  • drink_store=
  • build_drink_store
  • create_drink_store

這時候以 DrinkStore 的角度來看,就會有以下方法可以用:

  • user
  • user=

上一篇
[Day14] Ruby on Rails - Model Migration
下一篇
[Day16] Ruby on Rails - Model 關聯性,一對多
系列文
Junior Ruby on Rails 工程師的心得與自我挑戰 30 天 (單身狗轉移注意力之歷練)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言