備忘を兼ねて
Moduleとモデル名が重複するとNoMethodErrorになる
ファイル構成
app
├── controllers
│ └──user
│ └── hoges_controller.rb
└── models
└── users.rb
hoges_controller.rb
module User
class HogesController < User::ApplicationController
def index
User.where(id: ids)
end
## その他メソッド省略
end
end
エラー内容
NoMethodError in User::HogesController#index
undefined method `where' for User::Module
エラーの原因
モデル名とコントローラー側で定義したモデュール名が重複しており、User
を呼び出すとModule側が優先されてしまう。
対策
モデルを呼び出したい時は::
を頭につけるだけ。
hoges_controller.rb
::User.where(id: ids)