「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 件のコメント:
コメントを投稿