突然開発環境の Rails が起動できなくなった
rake aborted!
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "users" does not exist
LINE 8: WHERE a.attrelid = '"users"'::regclass
いろいろ調べたけど同じエラーの解決方法では解決せず。
ActiveRecord まわりなので model が原因かなーと思い、修正箇所を全部戻しては確認…をしていったところ、判明した。
原因は scope に find_by_*
という命名をしていたせい。
ここの記事が詳しく解説してくれている。
find_by_xxx という名前のため、自動生成されるカラムに対する find_by と競合しないかをチェックしているらしく、このタイミングではまだテーブルが存在しないためエラーになっていた。
試しに hoge_by
って名前にしたらちゃんと通った…。