1

次のコードで「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

私の User モデルは次のようになります。

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。作成が成功する代わりにエラーが発生する理由はありますか?

4

1 に答える 1

2

必要な関連has_one付けの場合:

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

create にも同じパターンが使用されます。

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

has_oneのドキュメントを見ると、関連付けを宣言したときに作成されるメソッドがリストされています。

于 2013-01-23T22:13:55.590 に答える