2012-02-14 1 views
0

다른 프로그램에서 사용하는 MySQL 테이블에서 작업하고 있습니다. 내가하고 싶은 일은 Sinatra와 DataMapper를 사용하여이 데이터베이스의 웹 인터페이스를 구축하는 것입니다. 그러나 DataMapper 모델에서 내 속성을 선언하면 이름 지정 규칙에 문제가 발생합니다.DataMapper 명명 규칙이 기존 MySQL 테이블과 충돌합니다.

예를 들어, 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 

답변

0

솔루션 :

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