ActiveRecord - 資料表關連 part 2 (關聯性)(一對一)
假設我們現在有一個書店系統
另外開一個新專案MyStore
先使用終端機輸入相關的rails 指令產生對應的model
has_one(它其實是類別方法)
打開文字編輯器VScode,進到app/models/owner.rb
編輯裡面內容
接著打開 reails console
來建議一個變數 o1(歐一)並給它一個名字 O1(大寫歐一)
這裡也新增一個商店命名s1,但是會發現錯誤,是正常的。
可以透過查看錯誤訊息知道,它必須有一個owner,我們還沒有指定給它
所以我們可以換個方式
答案:
- build → 會直接寫到記憶體裡面,但是要透過
.save
才會存進去資料庫 - create → 會直接寫進去資料庫
belons_to(它其實是類別方法)
答案:
- 沒有同時設定不會怎麼樣,只是只能從
owner.rb
查詢store.rb
。但是不能從store.rb
反查owner.rb
。 - xxx_id不一定要叫這個名字,這只是個慣例。
完整名稱:
如果今天是別人寫的資料庫,但不是用Ruby寫的我們就會需要使用這樣的寫法去讀取外部id。
has_many(它其實是類別方法)
答案:
- has_many方法後面不用符號改用字串不會發什麼事。
- 就來建立一個看看
打開VScode
在store.rb
新增has_many :products
打開rails console
來看看
回到VScodestore.rb
將products改成單數product
然後再開啟rails console
來看看,會發現這時候找不到對應的商品。
參考來源:為你自己學 Ruby on Rails (https://railsbook.tw/)