2012年5月30日水曜日

Railsのサンプルで「Can't mass-assign protected attributes」ってエラーが出た

Ruby on Rails Guides: Getting Started with Rails」にあるBlogアプリのサンプルでRailsの基本を勉強していたところ、最後のところで動作しなかったのでメモ。

11 Building a Multi-Model Form」にあるように、tagというモデルを追加して、views/posts/_form.html.erbにタグの編集を追加すると、フォームのsubmitでエラーが発生するようになりました。

エラーの内容は以下。

ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: tags_attributes):

トレースを見ていると、assign_attributesでエラーが発生しているので、文字通り、保護された属性tags_attributesにアクセスしようとしたのが原因っぽい。

ということで、app/models/post.rbを次のように直したらあっさり解決。

class Post < ActiveRecord::Base
#  attr_accessible :content, :name, :title
  attr_accessible :content, :name, :title, :tags_attributes
...
end

Rails 3.1ベースで書かれたドキュメントで、そもそもmodelのソースにattr_accessibleがないので、ここを変更するという指示がなかったのでしょう。

こちらの環境は3.2.3なんで、極力バージョンが近いものを参考にするようにした方がよさそうだと学習。

0 件のコメント:

コメントを投稿