それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

rails を使っていて Table doesnt exist と言われたときの対応

rails で Table doesnt exist

原因:テーブル名とClass名が正しく対応していない。


rails は class 名とテーブル名を対応させるのだが、標準では複数形(pluralize)される。私は、ちょっと戸惑ってた。

book → books 
read book → read books
read books of user → readed books of users #一対多を表現したのに、多対多の名前にされた。。。orz

DHHちょっとやりすぎ。DHHの哲学に従うことにする。
先にテーブル作っちゃったよと言うときは。テーブル名を変更しましょう。まぁ防ぐ方法はあるんだろうけど。

railsがアクセスするテーブル名を確認

pluralizeメソッドを使う

takuya@tenryu:~/uni_rails$ script/console
Loading development environment (Rails 2.3.5)
>> "read"
=> "read"
>> "read".pluralize
=> "reads"
>> "child".pluralize
=> "children"
>>

またはログを見る

development.log  production.log   server.log       test.log
takuya@tenryu:~/uni_rails$ tail -f log/development.log
  CACHE (0.0ms)   SELECT * FROM `book_xmls` WHERE (`book_xmls`.`id` = 127100)
....

テーブルを確認したら、MySQLのテーブル名を確認する。