DataMapper命名约定与现有的MySQL表冲突

时间:2012-02-14 03:27:57

标签: ruby datamapper

我正在处理另一个程序使用的MySQL表。我想要做的是使用Sinatra和DataMapper为这个数据库建立一个Web界面。但是,当我在DataMapper模型中声明我的属性时,我遇到了命名约定的一些问题。

例如,MySQL表中的字段是ControlStationID,我是这样声明的,但是当DataMapper运行时,它会将其更改为control_station_id。无论如何我可以纠正这个?我无法改变表结构。

感谢。

看到错误:

DataObjects::SQLError: Unknown column 'control_station_id' in 'field list' (code: 1054, sql state: 42S22, query: SELECT `id`, `control_station_id` FROM `returnmessage` ORDER BY `id`)

MySQL表结构

mysql> show fields from returnmessage;

+-------------------+---------------+------+-----+---------+----------------+
| Field             | Type          | Null | Key | Default | Extra          |
+-------------------+---------------+------+-----+---------+----------------+
| ID                | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| ControlStationID  | int(11)       | YES  |     | NULL    |                | 
+-------------------+---------------+------+-----+---------+----------------+

我的代码

class ReturnMessage
  include DataMapper::Resource
  property :ID,                  Serial
  property :ControlStationID,     Integer

end

repository(:default).adapter.resource_naming_convention = lambda do |value|
  value.downcase
end

1 个答案:

答案 0 :(得分:0)

解决方案:

property :ControlStationID, Serial, :field=>'ControlStationID'