【Rails】Validation failed ... must existというエラーの解決法
困ったこと
class User < ApplicationRecord has_many :posts, dependent: :destroyendclass Post < ApplicationRecord belongs_to :userendRailsにて、1対多の関係にあるUserモデルとPostモデルのクラスを作っていた。
ActiveRecord::RecordInvalid (Validation failed: Lost must exist):すると上のようなエラーが出た。
解決法
class Post < ApplicationRecord belongs_to :user belongs_to :user, optional: trueend関連付けメソッドの引数にoptional: trueを記述する。
原因
class User < ApplicationRecord has_many :posts, dependent: :destroyendclass Post < ApplicationRecord belongs_to :user, optional: trueend先ほど例として挙げたモデルクラスの場合、Postテーブルの外部キーであるuser_idというカラムは、自動でNOT NULLになる。
そこでoptional: trueを指定し、その外部キーをnullableにしてあげることでバリデーションに引っかからなくなる。