Rails5から belogs_to アソシエーションの挙動が変わった。
親モデルに属している子モデルは親モデルの外部キーが存在しないとバリデーションエラーになるのがデフォルトの挙動となっている。
参照先レコードのidをnullで登録しようとした場合は以下のようなバリデーションエラーが出る。
1
| |
DHHの一声で belogs_to の挙動が変わる様が垣間見れるイシュー。
DHHの言い分としては「普通 belongs_to って、参照先テーブルのIDは必ずもってるだろ。ならデフォルト required: true でよくね?」という話。
この挙動をRails4と同じにしたい場合は optional: true を使う(required: false は廃止予定なので使わないほうがいい)。
1 2 3 | |
belongs_to のオプションの詳細については以下のドキュメントで参照できる。