RoR 3.1 Mysql2 Adapter + Remote DB не работи, когато името на таблицата завършва с буквата y

Не съм сигурен дали това е грешка или напълно съм полудял.

Имам отдалечена база данни и мога да правя заявки за всички таблици с изключение на таблици, които завършват с буквата "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::Error: Таблица 'openx.ox_stats_countries' не съществува: ПОКАЖИ ПОЛЕТА ОТ ox_stats_countries

Както можете да видите, той автоматично превръща името на таблицата в множествено число и следователно не може да го намери. Имам същия проблем с името на таблицата "агенция". И все пак с всички други таблици (не завършващи с буквата "y") всичко работи добре.

Това грешка на адаптера mysql2 ли е? Ако е така, къде да подам подобна грешка? Имате ли някакви идеи как да се реши това? Аз съм нов в RoR и програмирането като цяло, така че ще оценя всякакъв вид помощ.

Благодаря за отделеното време... Ули


person soeffing    schedule 14.10.2011    source източник
comment
Всъщност звучи като проблем с инфлектора. Имената на вашите таблици трябва да са в множествено число, има ли причина да ги правите в единствено число?   -  person bricker    schedule 14.10.2011
comment
@bricker Мисля, че това е наследената част.   -  person Dave Newton    schedule 14.10.2011
comment
@DaveNewton Не видях това, благодаря.   -  person bricker    schedule 14.10.2011


Отговори (2)


Е, ActiveRecord търси имена на таблици в множествено число по подразбиране. Имената на вашите таблици трябва да са в множествено число (агенции, например). Можете обаче да замените името на таблицата с това във вашия модел:

class Agency
  set_table_name 'agency'
  #...
end
person bricker    schedule 14.10.2011

Не съм сигурен относно въпроса за грешката, но знам, че можете ръчно да зададете името на таблицата на модел с set_table_name "ox_stats_country"

От api: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-set_table_name

person Joe    schedule 14.10.2011