自分用メモ。

1.クラス名とファイル名が同じか

rails gを使わずに直接modelのファイルを作るとやりがち。

2.モデルの名前は単数形か

多対多の関係を作るために、次のようなコードを書いたところ、NameError: uninitialized constant User::UserGroupが表示された。

class User < ApplicationRecord
  has_many :user_groups
  has_many :groups, through: :user_groups
end

class Group < ApplicationRecord
  has_many :user_groups
  has_many :user, through: :user_groups
end

class UserGroups < ApplicationRecord
  has_many :user_groups
  has_many :groups, through: :user_groups
end

原因は中間テーブル用のmodelであるUserGroups。

Railsの命名規則として、modelのクラス名は単数形じゃないとダメらしい。


他のことが原因でNameError: uninitialized constantが出た場合は追記する。