NameError in Controller&uninitialized constantが出た話
先ほどのRailsでのINSERT INTOに引き続いて、続けさまの投稿。
これはコードの覚書きというよりは小ネタ的なTIPS。
表題の通り「NameError in Controller」と「uninitialized constant」のエラーが出たときの話とその解決だ。
実はリレーションしたテーブルからnewとかcreateを行う際にこのエラーでハマった。
・・・というか、多分他のupdateとかのメソッドについても、同じようなこのエラーが頻出していたんだと思う。
で、調べてみてもこのエラーでは、「モデルの名前が複数形だから」とかいうのを散見したのだが、自分の場合はこれに該当しない。
というよりは、モデルの名前は複数系にしてはいけないということは、既に存じていた。
なぜかって?Ruby on Railsをインストールして習作を作り始めた初日に、いきなりそれにドンピシャな複数形のモデル名を書いてエラーをしたからだ。
まぁこれはそもそもRuby on Railsを始めた初心者がRails・・・というかRubyのネーミングルールを分かっていないことでありがちなものだから・・・絶対にそのような形式で名前を付けないように頭に刻み込んだ。
と、まぁとりあえず問題はそこじゃないわけで。
ネーミングルールを守っているのにもかかわらず、「NameError in Controller」と「uninitialized constant」が出た場合だ。
それは・・・
has_manyかbelongs_toで:class_nameの指定がスペルミスか、単純に指定していないか、誤っているか、とにかくそれで間違っているって言うことなんだよ!!!
ΩΩ Ω<な、なんだってー!?
うわぁぁぁぁぁ!!!
俺のバカッ!バカッ!!あたしってほんとバカ!!!
頭良さげに冒頭をつらつら書いたけど、蓋を開けてみればこんなもん。わたしのかかとはこんなもん。
はい。ということで、「NameError in Controller」と「uninitialized constant」が出た場合、モデルの複数形の名前を疑う前にやるべきこと。
スペルミスだとかなんとかの間違いを確認しましょう。以上。