我有用户表我需要用户在attach_resumes
表上创建一个CV,我已创建关系但显示此错误:
未定义的方法`attach_resumes'代表nil:NilClass
在我的代码下面我错了什么?
用户模型
class User< ActiveRecord::Base
has_one :attach_resumes
end
attach_resumes模型
class AttachResume < ActiveRecord::Base
belongs_to :user
end
attach_resumes控制器
def new
@attach_resume = AttachResume.new
end
def create
params.permit!
if @attach_resume = @user.attach_resumes.create(params[:attach_resume])
flash[:notice] = "Attached Resume successfully"
render "attachCV"
else
render "attachCV"
flash[:warning] = "Please Attach Only PDF"
end
end
如果有人找到解决方案,那将是一件好事
答案 0 :(得分:3)
模型应该是:
class User< ActiveRecord::Base
has_one :attach_resume
end
请注意:attach_resume
没有s
因此,当您在控制器中创建attach_resume
时将是:
@user.create_attach_resume(params[:attach_resume])
答案 1 :(得分:1)
也许您的@user
未经过验证
用户验证过程:
helper / applecation_helper
def user
@user ||= User.find_by(user_id: session[:user_id])
end
&安培;然后使用@user
希望能理解这个
答案 2 :(得分:0)
正如它指定的那样,你在一个零级别上调用attach_resumes
。检查@user是否包含该部分的任何值。
另外,在旁注: 您正在建立一对一的关系,但在模型和控制器中使用一对多复数。如果您确实想要一对一,请将模型中的行更改为
has_one :attach_resume
并且在您的控制器中
@user.attach_resume.create(params[:attach_resume])
如果您想拥有一对多,请将关系更新为
has_many :attach_resumes
答案 3 :(得分:0)
您的关联是错误的。它必须是has_one :attach_resume
,因为has_one
是单数。因此,您必须将attach_resume
模型定义为单数。
class User< ActiveRecord::Base
has_one :attach_resume
end
您可以推荐关联here for your situation.,您可以参考Active Record Association here.