1

我使用以下代码收到“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.idand关联的新项目project.user_id。任何想法为什么我得到错误而不是成功创建?

4

1 回答 1

2

对于has_one您想要的关联:

@project = current_user.build_project(params[:project])

相同的模式用于创建:

@project = current_user.create_project(params[:project])

如果您查看has_one 文档,它们会列出在您声明关联时创建的方法。

于 2013-01-23T22:13:55.590 回答