複数作業者との事故が起こらないようにマイグレーションを使わないでDB管理をしている故の凡ミスかもしれないが、数時間ハマったので一応記録。
記録用モデル(テーブル)でActiveRecordのクラス名を**"DataHistory"**などと命名したと想定。
他のエンジニア作業者との事故が起こらないようにmigrateをせずに運用という前提で
テーブルをSQLで直接クリエイトしてテーブル名を**"data_histrys"**などと命名してしまうと
Mysql2::Error: Table 'data_histories' doesn't exist: SHOW FULL FIELDS FROM `data_histories`
といった感じで怒られる。存在しないって、ちゃんとあるやんけ!
(ここでちゃんとエラーが指す対象をちゃんと読み解けば良かったものの、意味を理解しようとせずエラー文をそのままググっただけだったのがハマった原因ではある)
この場合、SQLのテーブル名は英文法的に**"data_histories"としなければrails側では"DataHistory"**クラスのモデルとしては認識してくれない。
〇 → "data_histories"
✖ → "data_historys"
英文法的に複数形のスペルが単純に"s"だけではない不規則な複数系単語を扱う場合は要注意。
railsの命名規則にひっかかる恐れがあります。制約へのこだわり強すぎる・・・。
こんな事態は中学英語すら苦手な日本人エンジニアくらいしか当てはまらないとは思いますが・・・