我有两个模型,User和Profile,以一对一的关系,我正在尝试为用户创建一个新的配置文件,如果它还不存在:
user = User.includes(:profile).find( params[:user_id] )
unless user.profile.present?
user.profile.create
end
但是我收到一个错误:未定义的方法`create'代表nil:NilClass
答案 0 :(得分:9)
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