2013-01-10 5 views
1

ActiveRecord를 통해 Limesurvey 데이터베이스에 액세스하려고합니다. 일부 테이블에는 '79924X192X1240'과 같은 열 이름이 있습니다. 내가 모델을 액세스 할 때, 나는 다음과 같은 오류가 발생합니다 :ActiveRecord 및 잘못된 열 이름

ActionView::Template::Error (/usr/local/rvm/gems/ruby-1.9.2-p318/gems/activerecord-3.1.10/lib/active_record/attribute_methods/time_zone_conversion.rb:44: syntax error, unexpected tINTEGER 
       def 79924X192X1240=(original_time) 
         ^): 

것 같아요, 오류가이 방법은 숫자로 시작하는 것이 허용되지 있기 때문에 나타납니다. 그러나 Limesurvey가 이러한 열을 생성하므로 열 이름을 변경할 수 없습니다.

이 오류는 열의 데이터 형식 (예 : 79924X192X1240)이 datetime 인 경우에만 나타납니다. varchar와 같은 다른 데이터 유형은 아무런 문제가 없습니다.

어떻게 이러한 datetime 열에 액세스 할 수 있습니까?

답변

0

원시 SQL 쿼리를 수행해야합니다. ActiveRecord는 메서드 이름이 숫자로 시작하지 못하도록하는 루비 용으로 작성되었습니다. 테이블의 각 열은 메소드와 동일하므로 해당 정보에 액세스하려고하면 매번 구문 오류가 발생합니다.

당신은 사용할 필요가 : ActiveRecord::Base.connection.execute

+0

오른쪽,하지만 난 액티브로 액세스하려면. 게다가 다른 데이터 형식은이 이름 (79924X192X1240)으로 작동합니다. 따라서이 열 이름은 데이터 형식이 없거나 버그이며 datetime 데이터 형식에서도 작동해야합니다. – Christian

+0

해시를 사용하여 열에 액세스하려고 했습니까 : '.attributes'? – weexpectedTHIS

+0

모델을 호출 할 때 오류가 이미 나타납니다. – Christian