Rails を使用してレガシー データベースをモデル化しようとしています。問題なくいくつかのテーブルをモデル化できましたが、モデル化できないテーブルがあります。動作するものは次のとおりです。
mysql> describe symbols;
+---------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+---------------+------+-----+---------+-------+
| symbol | varchar(40) | NO | PRI | | |
| company_name | varchar(40) | YES | | NULL | |
| company_description | varchar(2048) | YES | | NULL | |
| exchange | varchar(40) | NO | PRI | | |
+---------------------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
モデルコードは次のとおりです。
class Symbols < ActiveRecord::Base
end
Railsコンソールの出力は次のとおりです。
>> Symbols
=> Symbols(symbol: string, company_name: string, company_description: string, exchange: string)
>> Symbols.count
=> 5980
ここで、機能しないテーブルを次に示します。
mysql> describe cgp;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| symbol | varchar(40) | NO | PRI | | |
| val | float | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
モデルコードは次のとおりです。
class Cgps < ActiveRecord::Base
set_table_name "cgp"
set_primary_key "symbol"
end
Railsコンソールの出力は次のとおりです。
=> Cgps(Table doesn't exist)
>> Cgps.count
ActiveRecord::StatementInvalid: Mysql::Error: Table 'smdata.cgp' doesn't exist: SHOW FIELDS FROM `cgp`
私は困惑しています。クラスを「Cgps」の代わりに「Cgp」と呼ぶバリエーションも試しました。モデルを何度か破壊して再構築しましたが、成功しませんでした。完全に機能する他のテーブルがあります。このテーブルは機能しません。これはとても単純なテーブルですが、何が間違っているのでしょうか? 複数形のオーバーライドに成功し、「id」列がないという事実に対処しています。どんなアイデアでも大歓迎です!