RoR 3.1 Mysql2 Adapter + Удаленная БД не работает, когда имя таблицы заканчивается буквой "y" - PullRequest
0 голосов
/ 14 октября 2011

Я не уверен, является ли это ошибкой или я полностью сошел с ума.

У меня есть удаленная база данных, и я могу делать запросы ко всем таблицам, кроме таблиц, заканчивающихся буквой "y"."

Моя модель: ox_stats_country.rb

 class OxStatsCountry < ActiveRecord::Base
    establish_connection :openx
    self.abstract_class = true
 end

Имя таблицы в удаленной / устаревшей базе данных -" ox_stats_country ".

Когда я пытаюсь запросить что-то вконсоль rails выглядит так: «OxStatsCountry.find (1)»

Я получаю следующую ошибку:

ActiveRecord :: StatementInvalid: Mysql2 :: Ошибка: Таблица 'openx.ox_stats_countries'не существует: ПОКАЗАТЬ ПОЛЯ ИЗ ox_stats_countries

Как вы можете видеть, оно автоматически множит имя таблицы и, следовательно, не может его найти.У меня такая же проблема с именем таблицы "агентство".Тем не менее со всеми остальными таблицами (не заканчивающимися буквой "y") все работает нормально.

Это ошибка адаптера mysql2?Если да, то где я могу отправить такую ​​ошибку?У вас есть идеи, как это решить?Я новичок в RoR и программировании в целом, поэтому я был бы признателен за любую помощь.

Спасибо за ваше время ... Uli

Ответы [ 2 ]

4 голосов
/ 14 октября 2011

По умолчанию ActiveRecord ищет имена таблиц во множественном числе.Ваши имена таблиц должны быть во множественном числе (агентства, например).Тем не менее, вы можете переопределить имя таблицы в вашей модели:

class Agency
  set_table_name 'agency'
  #...
end
1 голос
/ 14 октября 2011

Не уверен насчет вопроса об ошибке, но я знаю, что вы можете вручную задать имя таблицы модели с помощью set_table_name "ox_stats_country"

Из API: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-set_table_name

...