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