Create 被rollback回來


#1

大家好,我照著教學影片做,但此時新增book的時候被資料rollback不給寫入,不知道是改版的關係還是我哪邊有出錯,謝謝,rvm2.3.3 rails 5.0.1


2.3.3 :001 > user = User.create(:name => “chen”)
(0.2ms) BEGIN
SQL (0.4ms) INSERT INTO users (name) VALUES (‘chen’)
(69.6ms) COMMIT
=> #<User id: 8, name: “chen”>
2.3.3 :002 > book = Book.create(:title => “apple”)
(0.6ms) BEGIN
(0.4ms) ROLLBACK
=> #<Book id: nil, owner_type: nil, owner_id: nil, title: “apple”>
2.3.3 :004 > book = Book.create!(:title => “apple”)
(0.4ms) BEGIN
(0.3ms) ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Owner must exist


#2

沒輸入密碼?


#3

User.create可以內~~


#4

那你就讓這本書有作者呀 XD

book = Book.create!(:title => “apple”, :user_id => user.id)


#5

Rails 5 中 belongs_to 中預設改為 require: true ,也就是預設檢查不為 nil,你可以加設定移除這判斷就是,類似文中的

belongs_to :item , require: false  

這是和 Rails 4.x 的分別沒錯哩,文中也有介紹 global 的設定解法,至於有些 relation 沒對象是正確的,如果有必要沒有的話

這邊的語義會類似你隸屬於別人,卻沒隸屬的對象,這是有問題的,所以才用預設來軟性要求這件事唄