似たような名前というのはややこしいものです。
横山健と横山剣、みたいな。
それはプログラミングの世界においては、しばしばエラーの種となります。
今回はRailsアプリでいつの間にやらUserモデルが更新できなくなっちゃったお話。
ユーザーを更新しようとするとupdateで
NoMethodError in UsersController#update
undefined method `each' for #
なにやら、こんなエラーが出る。
そしてUserのメモ欄に
ActiveRecord_Associations_CollectionProxy
こういうエラー文が保存されていた。
ググってもあまり情報がなかったんだけど、メモ・・・メモ・・・待てよ・・・とよくよく考えたら、さきほどMemoモデル(Userモデルと1対多)を追加したのだった。これが原因っぽい。
たぶん、Userモデルとアソシエーション関係にあるMemoモデルを追加したことで、Userモデルの中のmemoカラムとMemoモデルが競合しちゃったのだと思います。
というわけで、Userモデルのカラム名をmemoからuser_memoに変更してみる。
エラー消えた!更新できた。
はい、一件落着。