Rails で PG::UndefinedTable: ERROR: relation “users” does not exist が発生した

突然開発環境の 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 って名前にしたらちゃんと通った…。