【Rails】uninitialized constant UsersController というエラーが出たときの対処法




Railsでuninitialized constant UsersController が出ただと?

ある日、Railsアプリを作っていると、

uninitialized constant UsersController

という狂ったエラーが出現。

 

 

エラーを直訳すると、

初期化されていない定数UsersController

ですね。

文を見る限りUsersコントローラーが原因らしかったのですが、厄介なことに、

具体的なエラー箇所が示されず!!

 

 

エラーを直したくても直せないので、思わず天を仰いだそのとき、です。

突如、このエラーの原因、そして解決策をひらめいたのですよ。

 

エラーの原因

原因はずばり

コントローラーの命名ミスです。

エラーの中に書いてあるコントローラー名は

UsersController

でUserが複数形になって

Users

となっていました。

 

一方、僕が作ってしまったコントローラーを確認すると、単数形のUserで、

user_controller.rb

だったのです。

 

こ、原因はこれかよ!?

 

ご存知の通り、Railsでは命名ルールが厳しく、

コントローラー、テーブルの命名は複数形

と決まっています。

逆に、モデルの名前は単数形にしなければならず、このルールを乱すことは許されません。

 

例えば、usersテーブルのコントローラーだったら、

users_controller.rb

にしないといけないのです。

今回の「uninitialized constant xxx Controller」というエラーは

Railsの単数・複数の命名ルールを無視したら出てしまったようです。

 

エラーの解決策

「あっ、コントローラーの名前が悪いの?」

「じゃあコントローラーの名前を変えようぜ」

と思い立ち、単にuser_controller.rbusers_controller.rbに変更してもダメです。

名前だけ修正してしまうと、

もっとやばいエラーが出現することでしょう笑

 

なぜなら、Railsではコントローラー作成時に、コントローラー以外のファイルも同時に生成しているからです。

たとえば、user_controller.rb$rails g controller userで作ると、

  • user_helper.rb
  • user.coffee
  • user.scss

などが誕生します。

したがって、コントローラー作成時の命名ミスは、ファイル名だけではなく、影響は複数のファイルに及んでいるのです。

 

「えっ、じゃあどうすればいいの!?」

と若干、苛立ってきた方、ご安心ください。じつはRailsには、

コントローラーを削除できるコマンドライン

が存在しています。

 

こちらの神記事によると、

を発動すると、「userコントローラー」と一緒に作ったファイルごとゴソっと削除できるようです。

その後にもう一度「正しい名前のコントローラー」を作り直してみましょう。

 

それでは!

Lin

Pocket
LINEで送る




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

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




コメントを残す

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