Ruby on Rails foreign key must exist 的問題
rails 在這次的更動之後,如果 belongs_to 的 foreign key 不存在的時,會產生驗證錯誤。
1 | class Author < ActiveRecord::Base |
上面的例子可以看到,我們沒辦法建立 Book 的紀錄。
options
required: 如果設為true的話,會驗證關聯是否存在。在 rails 5 預設為true。optional: 如果設為true的話,不會驗證關聯是否存在。
上面兩個選項都是驗證關聯本身,不是驗證 foreign key 的 id。
1 | class Book < ActiveRecord::Base |
rails 5 裡預設 required 的選項為 true,會驗證關聯是否存在,否則跳出 must exist 的錯誤。
1 | class Book < ActiveRecord::Base |
optional 為 true 不會驗證關聯是否存在。
default options
那如果我們想要在整個程式中使用同一種行為,可以在 config/initializers/new_framework_defaults.rb 裡面修改以下的選項:
1 | # config/initializers/new_framework_defaults.rb |
rails 5 裡預設為 true 會驗證關聯是否存在。將此設為 false 可以關掉這個驗證。