Railsのソースを読んでいて、以下のような記述がありました
belongs_to :company, optional: true
完全に忘れていたので、未来の自分のためにメモしておきます
belongs_toのoptional: trueとは?
外部キーがnilでも許可するという意味です
同じ記事を開いた形跡があったので、前にも調べたのに忘れていたようです
使用例
例えば、
class User < ApplicationRecord has_many: posts end class Company < ApplicationRecord has_many: posts end class Post < ApplicationRecord belongs_to :company, optional: true belongs_to :user, optional: true end
上のような定義があり、
Userが追加した記事のデータもCompanyが追加した記事のデータも同じPostテーブルに保存されるとします
Postテーブルに保存されているデータには、Userに紐づいているものもあれば、Companyに紐づいているものもありますが、
UserとCompanyの両方に紐づいていることはありません
この場合、Userに紐づくPostのデータには、user_idが保存されていますが、company_idはnilになります
もし、optional: trueをつけていなかった場合、company_idがnilだとエラーになります
このような時にoptional: trueが必要になってきます