0

我不确定这是一个错误还是我完全发疯了。

我有一个远程数据库,我可以对所有表进行查询,除了以字母“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: Table 'openx.ox_stats_countries' 不存在:SHOW FIELDS FROMox_stats_countries

如您所见,它会自动将表名复数,因此无法找到它。我对表名“机构”有同样的问题。然而,对于所有其他表(不以字母“y”结尾),一切正常。

这是 mysql2 适配器的错误吗?如果是这样,我会在哪里提交这样的错误?您对如何解决这个问题有任何想法吗?我是 RoR 和一般编程的新手,所以我会很感激任何帮助。

谢谢你的时间......乌利

4

2 回答 2

4

嗯,ActiveRecord 默认会查找复数表名。您的表名应该是复数(例如,机构)。但是,您可以在模型中使用它覆盖表名:

class Agency
  set_table_name 'agency'
  #...
end
于 2011-10-14T12:59:10.763 回答
1

不确定错误问题,但我知道您可以手动设置模型的表名set_table_name "ox_stats_country"

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

于 2011-10-14T12:58:23.320 回答