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