blongs_toの外部キーがnilでもDBへ保存できるようになるオプション
著者(author)と書籍(book)の1対多の関係があった場合、モデルは次のようになります。
class Author < ApplicationRecord has_many :books end
class Book < ApplicationRecord belongs_to :author end
Bookは次のカラムを持っています。
name:string author_id:integer
belongs_to
Bookを登録する場合、author_idがnilだとバリデーションで弾かれます。
これはbelongs_toオプションを設定することで、自動的に外部キーがpresence: true
となるからです。
デフォルトで設定してくれるのは助かりますが、困ることもあります。
例えば、書籍の著者が分からない、なんてケースもあるかと思います。
optional: true
そういう時はoptional: trueオプションを付けることで、外部キーがnilでも保存ができるようになります。
class Book < ApplicationRecord belongs_to :author, optional: true end
これでauthor_idがnilでも保存ができるようになりました。