ActiveRecord и недопустимые имена столбцов

Я хочу получить доступ к базе данных Limesurvey через ActiveRecord. Некоторые таблицы имеют имена столбцов, например «79924X192X1240». Когда я хочу получить доступ к модели, я получаю следующую ошибку:

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, не создают проблем.

Как я могу получить доступ к этим столбцам даты и времени?


person Christian    schedule 10.01.2013    source источник


Ответы (1)


Для этого вам нужно делать необработанные запросы sql. ActiveRecord написан на ruby, что не позволяет именам методов начинаться с цифр. Поскольку каждый столбец в таблице эквивалентен методу, попытка доступа к этой информации каждый раз будет вызывать синтаксическую ошибку.

Вам нужно использовать: ActiveRecord::Base.connection.execute

person weexpectedTHIS    schedule 10.01.2013
comment
Верно, но я хочу получить к ним доступ через ActiveRecord. Кроме того, другие типы данных работают с этими именами (79924X192X1240). Таким образом, либо эти имена столбцов не работают без типов данных, либо это ошибка, и она также должна работать с типом данных datetime. - person Christian; 11.01.2013
comment
Вы пытались получить доступ к столбцам с помощью хеша: .attributes? - person weexpectedTHIS; 11.01.2013