0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

後から名前空間を切ったらPG::UndefinedTable with namespaced Modelが発生した

Posted at

API作ったが、後から名前空間を別に切り出すことになった

API完成したものの、各モジュールの名前が煩雑になりすぎたので後から名前空間を切り出すことになった。

一通り変えたけどDBでエラー吐いてる

一通り変えて、念のためテストを走らす。
ちゃんとモデル名も変更してるし、DBと合ってるな。

。。。

PG::UndefinedTable with namespaced Model

DBがエラー吐いてるやん!

原因

prefixを定義してなかったのが原因でした。
例えば以下の様に名前空間をHogeで切っていて、その中にUserというモデルを定義しており、テーブル名はhoge_usersで定義されていた場合。

module Hoge
  class User < ApplicationRecord
  end
end

DBに問い合わせるにはtable_name_prefixというメソッドを定義してやると、ちゃんと頭にhogeを付けてDBに問い合わせてくれるので、テーブルが見つからないと言われなくなります。

module Hoge
  def self.table_name_prefix
    'hoge_'
  end
end
0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?