我正在尝试使用 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`
我难住了。我也尝试过尝试将类称为“Cgp”而不是“Cgps”的变体。我已经多次破坏和重建模型,但均未成功。我还有其他工作得很好的桌子。这个表不行。这么简单的表,会出现什么问题?我成功地覆盖了复数形式并处理了没有“id”列的事实。欢迎任何想法!