【Rails】ActiveModel MissingAttributeError (can’t write unknown attribute ‘user_id`)のエラー解消法!

fatfreecrm

こんにちは。たなか(@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`) まとめ

fatfreecrm

ということで今回はActiveModel MissingAttributeError (can’t write unknown attribute ‘user_id`)エラーについての解消法をご紹介しました。

終わってみればなんてことない問題でしたが、実装している機能とは関係ないカラムだったので、解決にやや時間がかかってしまいました。不覚。

 

今回は「ActiveModel MissingAttributeError (can’t write unknown attribute ‘user_id`)」とい比較的わかりやすいエラーメッセージだったので何とか原因究明できましたが、もうちょっと難解なエラー内容だったら本格的にハマってしまったかもしれません。

しかしながら、こういうハマりを何度もこなしていくうちに、Fat Free CRMについても段々わかってきたような気がしますね。

同じような症状でお悩みの方の参考になれば幸いです。

短いですが、今回はここまで。

関連記事

プログラミング関連の記事については以下でまとめています。

https://tanarizm.com/category/programing

コメントを残す

メールアドレスが公開されることはありません。