Railsのアソシエーション関係で NoMethodError が出たときの対処法




Railsのアソシエーション周りでエラー発生!

Railsアプリでアソシエーションの設定をしていたところ、次のやばそうなエラーが発生。

NoMethodError

 

「あれ・・・・ちゃんとアソシエーション設定したのになんでだろう」

とハマるにハマってしまいました。

 

具体的な状況を描写しておきましょう。

questionsテーブルとusersテーブルでアソシエーションを設定

その上で、クラス変数questionにuser.nameとメソッドをつけて、

とし「questionを投稿したuser名」を取得しようとしたのです。

しかし、この試みは「NoMethodError」に阻まれたのですね。

 

困ってググってみると、こちらの神記事に遭遇。

どうやらNoMethodErrorは、

Nilがあるにもかかわらず配列を展開すると発生するらしい

と書いてありました。

 

データベースをDB Browser for SQLiteで確認。

たしかにquestionsテーブルの1行目データusers_idカラムが空欄ではありませんか。

つまり、これはNilというやつです。

 

(もしかしてこれが原因か・・・・)

と思い、DB Browser for SQLite上でusers_idを直接入力して、command + sで上書きしてみると、

Image from Gyazo
見事にエラーが解消!!

 

うわっ、これは嬉しい。

僕と同じようにRailsアプリのアソシエーション設定時に、NoMethodErrorが出たら、

データベースの中身を確認するといいかもしれません。

Nilになっているカラム値がないかチェックしてみてください。

 

それでは!

Lin

Pocket
LINEで送る




音生入力で楽にブログを書く技が満載!
ブログ音声入力術

音声入力の使い方から文章を書くコツまで完全網羅。ブログを書きたいすべての人向けの電子書籍




コメントを残す

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