こんにちは。たなか(@tanaka_ricecake)です。
Ruby on RailsでWebアプリケーションサービスの開発をしています。
当サイトではおなじみ(?)の顧客管理Gem「Fat Free CRM」について、作業中に躓いたエラーをご紹介いたします。
もくじ
ActiveModel MissingAttributeError (can’t write unknown attribute ‘user_id`)
各機能のタブを横並びで追加している際、Javascriptで表示される新規作成フォームを実装していたところ、下記のエラーメッセージに遭遇しました。
Completed 500 Internal Server Error in 41ms (ActiveRecord: 4.7ms)
ActiveModel::MissingAttributeError (can't write unknown attribute `user_id`):
lib/fat_free_crm/fields.rb:68:in `assign_attributes'
app/controllers/entities/xxxxs_controller.rb:45:in `new'
Railsさん「attribute user_id
なんて言われても知らないから、書き込みできなかったよ」
そんな風に仰っているように見えます。
ActiveModel MissingAttributeError (can’t write unknown attribute ‘user_id`) 解決方法
テーブルにuser_idを追加
今回作業中に追加していたテーブルにはuser_id
は不要だと思っていました。
ですが、顧客管理gemのFat Free CRMでは『そのレコードを作ったのはどの管理者か』を記録する機能を提供しています。
そのため、追加したテーブルにuser_idがないと「どの管理者によって作られたレコードかわからない」ことがハマりの発端でした。
user_idの必要性も理解出来たところで、テーブルにuser_idカラムを追加してdb:migrate。
Railsさんもuser_idが追加されたことで、ActiveModel MissingAttributeError (can’t write unknown attribute ‘user_id`) が解消されました。
再び画面を確認したところ、無事に新規作成フォームが動き出しました。よかったー!
ActiveModel MissingAttributeError (can’t write unknown attribute ‘user_id`) まとめ
ということで今回はActiveModel MissingAttributeError (can’t write unknown attribute ‘user_id`)エラーについての解消法をご紹介しました。
終わってみればなんてことない問題でしたが、実装している機能とは関係ないカラムだったので、解決にやや時間がかかってしまいました。不覚。
今回は「ActiveModel MissingAttributeError (can’t write unknown attribute ‘user_id`)」とい比較的わかりやすいエラーメッセージだったので何とか原因究明できましたが、もうちょっと難解なエラー内容だったら本格的にハマってしまったかもしれません。
しかしながら、こういうハマりを何度もこなしていくうちに、Fat Free CRMについても段々わかってきたような気がしますね。
同じような症状でお悩みの方の参考になれば幸いです。
短いですが、今回はここまで。
関連記事
プログラミング関連の記事については以下でまとめています。