ユーザーとプロファイルの2つのモデルが1対1の関係にあり、ユーザーの新しいプロファイルがまだ存在しない場合は、それを作成しようとしています。
user = User.includes(:profile).find( params[:user_id] )
unless user.profile.present?
user.profile.create
end
しかし、エラーが発生します:nil:NilClassの未定義のメソッド `create'
ユーザーとプロファイルの2つのモデルが1対1の関係にあり、ユーザーの新しいプロファイルがまだ存在しない場合は、それを作成しようとしています。
user = User.includes(:profile).find( params[:user_id] )
unless user.profile.present?
user.profile.create
end
しかし、エラーが発生します:nil:NilClassの未定義のメソッド `create'
さて、2つのこと。まず、プロファイルがそこにある場合にのみブロックに入る(したがって作成できない)ため、コードが間違っていると思います。
if user.profile.blank?
user.profile.create
end
より正しいコードのように見えます。
次に、has_one を使用する場合、has_many の場合のように .create を使用しません。これは、has_many のような「プロキシ」メソッドではなく、リレーション オブジェクトが直接返されるためです。同等のメソッドは create_profile (または create_x (x はオブジェクト)) です。
したがって、次のコードを試してください。
if user.profile.blank?
user.create_profile
end