我在ProjectsController #create中获得了“NoMethodError”,其代码如下:
def create
@project = current_user.project.build(params[:project])
if @project.save
flash[:success] = "Project created!"
redirect_to root_url
end
end
我也尝试过使用@project = current_user.project.create(params[:project])
,但我得到了同样的错误,尽管是.create
。
我的项目模型如下所示:
class Project < ActiveRecord::Base
attr_accessible :title,
:sub_title,
:desc,
:category
validates :user_id, presence: true
validates :title, presence: true, length: { maximum: 35 }
validates :category, presence: true
belongs_to :user
...
end
我的用户模型如下所示:
class User < ActiveRecord::Base
attr_accessible :name,
:surname,
:email,
:email_confirmation,
:password,
:password_confirmation
has_secure_password
has_one :project
...
end
据我所知,这应该创建一个与user.id
和project.user_id
关联的新项目。任何想法为什么我得到错误而不是成功创作?
答案 0 :(得分:2)
对于您想要的has_one
个关联:
@project = current_user.build_project(params[:project])
相同的模式用于创建:
@project = current_user.create_project(params[:project])
如果查看has_one documentation,他们会列出声明关联时创建的方法。