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
のオプションの詳細については以下のドキュメントで参照できる。