轨 3 中未定义的方法'build'



我收到一个"NoMethodError in ProjectsController#create",代码如下:

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.idproject.user_id相关联的新项目。 知道为什么我收到错误而不是成功创建的任何想法?

对于所需的has_one关联:

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

相同的模式用于创建:

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

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

相关内容

  • 没有找到相关文章

最新更新