1

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」列がないという事実に対処しています。どんなアイデアでも大歓迎です!

4

0 に答える 0