今年1月に転職して新しい環境で働き始めていて、そこのプロジェクトではRuby on Railsを使っています。
今までRuby on Railsでサービス等を作った経験があまりがなくRailsを知る必要が出てきて、最近出版された「Ruby on Rails5の上手な使い方」という本を買いました。
この本にはモデルのbelongs_to に以下のようなオプションが書かれていました。
class Customer < ApplicationRecord has_many :orders end class Address < ApplicationRecord belongs_to :customer, optional: true end
この optional: true
ってなんなのか。
結論から言うと、belongs_toの外部キー
のnil
を許可するというものです。
上記のコードであればAddress.customer_id
が外部キーになり、値がセットされていない場合はバリデーションではじかれますが、optional: true
を設定しておくと、外部キーがnilであってもDBに保存できます。
ただDBの設計上、外部キーのnilを許可することが少ない気がするので、あまり使う設定ではないかもしれません。