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

「あれ・・・・ちゃんとアソシエーション設定したのになんでだろう」
とハマるにハマってしまいました。
具体的な状況を描写しておきましょう。
questionsテーブルとusersテーブルでアソシエーションを設定。
その上で、クラス変数questionにuser.nameとメソッドをつけて、
@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で上書きしてみると、
見事にエラーが解消!!
うわっ、これは嬉しい。
僕と同じようにRailsアプリのアソシエーション設定時に、NoMethodErrorが出たら、
データベースの中身を確認するといいかもしれません。
Nilになっているカラム値がないかチェックしてみてください。
それでは!
Lin

おそらく、ブロガー。
今年でフリーランス 6年目。