9
5

More than 3 years have passed since last update.

LoadError, Unable to autoload constant ~

Last updated at Posted at 2020-03-21

本記事投稿のいきさつ

railsでアプリ作成をしていたところLoadErrorが発生し基礎知識がなかったためにハマってしまいました。
無事解決する事ができましたが忘れないように、書き残します。
また、同じエラーで困っている初心者のためになれば幸いです。

エラー発生

itemモデルとitem_imageモデルでアソシエーションを組み,以下の記述をしたところエラーが発生

items_controller.rb
  def new
    @item = Item.new
    @item_images = Item_image.new
  end

エラー表示は以下です。

LoadError in ItemsController#new
Unable to autoload constant Item_image, expected *****/models/item_image.rb to define it

解決まで

なるほど。アソシエーションの記入を間違えたのか。
と初学者の自分は考えitem_image.rbを確認します。
item_image.rbの記述は以下です。

item_image.rb
class ItemImage < ApplicationRecord
  belongs_to :item
end

あれ?ちゃんと書けている。
と初学者の自分は思いました。自分の仮説が外れたので、Google先生に聞いてみました。

解決

Googleで調べたところどうやら

モデル名にアンダーバーを使ってもクラス名にアンダーバーはつかないとのことです。

ということでitems_controller.rbを編集。

items_controller.rb
  def new
    @item = Item.new
    @item_images = ItemImage.new
  end

無事解決することができました。
とても基本的なことですが、今までモデル名にアンダーバーを使っていなかったため、気づくこと出来なかった自分にとってはいい経験になりました。

おわり

最後まで見ていただき、ありがとうございました。

9
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5