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
可以關掉這個驗證。