Published on

Rails belongs_toで関連付けがなくてもvalidationを通るようにする方法

Authors
  • avatar
    Name
    ssu
    Twitter

Railsのactive recordにおいて、 belongs_toを使い関連付け(アソーシエション)をオプショナルで張りたいという場合があるかと思います。

rails5からは、デフォルトでアソーシエションが張られるようになているので、関連付けをオプショナルにするには、明示的に指定して上げる必要があります。

例えば、Blogは一人のユーザを持つ、あるいは、ユーザを持たない場合には、下記のようにかけます。

class Blog < ActiveRecord::Base belongs_to :user, optional: true // optionalで明示的にゼロもあり得ることを指定します。 end

このようにoptional: trueとすることで、userと関連付けを持つことがオプショナルになるので、userと関連付けがなくてもBlogを作成したりすることができるようになります。

参考: ClassMethods/belongs_to