0

これがバグなのか、それとも完全に気が狂ってしまったのかはわかりません。

リモート データベースがあり、文字「y」で終わるテーブルを除くすべてのテーブルに対してクエリを実行できます。

私のモデル: ox_stats_country.rb

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

リモート/レガシー データベースのテーブル名は「ox_stats_country」です。

次のようにレールコンソールで何かをクエリしようとすると: "OxStatsCountry.find(1)"

次のエラーが表示されます。

ActiveRecord::StatementInvalid: Mysql2::Error: テーブル '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 に答える