Railsのイントロレベルの素晴らしいチュートリアルをフォローしていますが、これに到達するまでは素晴らしい経験でした。
ActiveModel::MassAssignmentSecurity::Error in CommentsController#create
Can't mass-assign protected attributes: article_id
これはCommentsControllerがどのように見えるかです
class CommentsController < ApplicationController
def create
article_id = params[:comment].delete(article_id)
@comment = Comment.new(params[:comment])
@comment.article_id = article_id
@comment.save
redirect_to(article_path(@comment.article),
:notice => "Comment added by #{@comment.author_name}.")
end
end
チュートリアルによると、createメソッドをこのように書くのではなく、このように書くことで、@comment = Comment.new(params[:comment]
一括@comment.save
割り当てセキュリティエラーを回避できます。これは、Rails 3.2.8を実行していて、そのチュートリアルの作成者が執筆時点でRails 3.2.2を実行していたため、異なるバージョンのRailsを使用したことが原因だと思います。
誰かが私に解決策を提供してもらえますか?ありがとう
編集:
少しグーグルで調べたところ、:asオプションを使用してクラスの役割を定義できることがわかりましたが、ここで使用する必要があるかどうかはわかりません。私は今日Railsを学び始めたばかりですが、いくつかの基本を知った後も、まだ頭を悩ませようとしています。
EDIT2:移行ファイル
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.integer :article_id
t.string :author_name
t.text :body
t.timestamps
end
end
end