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

时间:2013-01-23 22:12:06

标签: ruby-on-rails-3

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

1 个答案:

答案 0 :(得分:2)

对于您想要的has_one个关联:

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

相同的模式用于创建:

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

如果查看has_one documentation,他们会列出声明关联时创建的方法。