- Published on
Rails belongs_toで関連付けがなくてもvalidationを通るようにする方法
Railsのactive recordにおいて、
belongs_to
を使い関連付け(アソーシエション)をオプショナルで張りたいという場合があるかと思います。
rails5からは、デフォルトでアソーシエションが張られるようになているので、関連付けをオプショナルにするには、明示的に指定して上げる必要があります。
例えば、Blogは一人のユーザを持つ、あるいは、ユーザを持たない場合には、下記のようにかけます。
class Blog < ActiveRecord::Base belongs_to :user, optional: true // optionalで明示的にゼロもあり得ることを指定します。 end
このようにoptional: true
とすることで、userと関連付けを持つことがオプショナルになるので、userと関連付けがなくてもBlogを作成したりすることができるようになります。