rails5のbelongs_toはデフォルトでnilを許可しない

Rails

先日、rails5のアプリで、登録処理が出来ない事象に遭遇したため、備忘録を残しておく。

前提

  • rails5
  • belongs_toを使用している
  • 親キーはnilを許可したい

構成としては以下のテーブルがある想定です。

  • user has_many post
  • post belongs_to user

事象

postしたユーザが存在しない場合(匿名)の状態で投稿したいが、ロールバックされている。

ちなみにrails4までは正常に動きます

 

解決方法

以下をしてあげればOK

belongs_to :user, optional: true

これでユーザがnilの場合でも許可される設定になります。

コメント