ピスタチオを食べながらrailsを楽しむ

ピスタチオ大好きな著者のrailsを使ったツール作成の日記です。

update_attributesでNoMethodErrorとなった場合の対処

個人的な開発だからTDDはせずテストコード1行も書かないでやっていたらupdateしたときにupdate_attributesがNoMethodErrorとなっていることが判明。気付いて良かった。

それで実際にstackoverflowなり見てみたんだがcontrollerにおけるパラメータの渡し方に問題があったりとかで今回の例ではあまり参考にならなかった。と思っていたが以下のブログに参考となる記事があった。

http://blog.livedoor.jp/sasata299/archives/51176071.html

この方のブログは何度か拝見させて頂いていたが、この記事がまさに今回の事象発生原因だと想定。なぜならview側で更新しなければいけないcolumnをすっ飛ばしていたことに気付いたからだ。何かというと親クラスのid。付け焼き刃的にnewするときはhiddenにして渡していたが、実装上、本来ユーザー側に勝手に変更されてはいけないものなのでmodel側でattr_accessibleから外すべきなんだろう。

取り急ぎupdate_attributesを使うときはしっかりパラメータを渡さないとこんなエラーが出る。