外部キーにnullを入れる方法

外部キーにnullを入れる方法

1対多の関係で、通常通り外部キーを持つレコードと外部キーを持たないレコードがある時に外部キーにnullを入れる方法を 備忘録としてこちらにまとめます。

以下のようなアソシエーション関係のモデルがあります。

[app/models/cookware.rb]

class Cookware < ApplicationRecord
  has_many :cooking_informations
end
[app/models/cook_information.rb]

class CookingInformation < ApplicationRecord
  belongs_to :cookware, optional: true
end

cook_informationのレコードには、外部キーのcookware_idが入るレコードと入らないレコードがあります。
そんな時は、optional: trueオプションを付与することで外部キーにnullを許容することができます。

参考記事

外部キーにnullが入ることを許容する[Rails] - Qiita