Подкласс ActiveRecord с ручным подключением к БД не может напрямую обращаться к переменным столбца - PullRequest
0 голосов
/ 09 июня 2009

У меня небольшая проблема с одной из моих моделей Rails. Это ничего, что я не могу обойти (как я уже сделал), но меня интересует актуальная проблема.

По сути, у меня есть класс на основе ActiveRecord с именем «События», который я подключил к удаленной базе данных с помощью «Установить_соединение». Все работает нормально, и я даже могу выполнить «Event.find (: all)». Однако я не могу использовать какие-либо удобные методы (column_name). Я вынужден сделать что-то вроде следующего:

for each event in Event.find(:all)
  puts event["Point"]
  puts event["Timestamp"]
end

... вместо

for each event in Event.find(:all)
   puts event.point
   puts event.timestamp
end

К вашему сведению, когда я генерировал модель, я запускал только «сценарий / генерировать событие модели» и абсолютно ничего другого. Затем я использовал «create_connection» и «set_table» внутри модели, чтобы получить соединение. Кроме того, я ничего не сделал. Опять же, запросы работают, но я не получаю удобный доступ.

Идеи

Best.

Ответы [ 2 ]

2 голосов
/ 09 июня 2009

Похоже, у вас есть проблема с заглавными буквами - поскольку ваши столбцы с заглавной буквы, ActiveRecord создаст для вас атрибуты с заглавной буквы Ваш второй пример может работать правильно, если вы делаете event.Point вместо event.point. Если вы предпочитаете использовать строчные версии, вы можете использовать alias_attribute из ActiveSupport:

alias_attribute :point, :Point
alias_attribute :timestamp, :Timestamp

... и т.д.

0 голосов
/ 09 июня 2009

Кроме атрибута alias_attribute

Если у вас есть доступ к этому приложению, которое управляет этим удаленным БД и может вносить изменения.

Вы можете использовать ActiveResource, который является очень чистым способом доступа к чему-то вроде удаленной модели.

http://railscasts.com/episodes/94-activeresource-basics

http://railscasts.com/episodes/95-more-on-activeresource

...