作成中のアプリで Rails 4.0 の複数のデータベースを試しています。これに基づいて:複数のデータベースと Rails 3.1 を接続し、 http://api.rubyonrails.org/classes/ActiveRecord/Base.html
異なる接続を使用するいくつかのモデルを作成できましたが、コードを DRY に保つために抽象クラスから接続を継承しようとすると、Rails 4.0 は自動的に単一テーブル継承を実行しようとしていると見なします。情報を照会し、テーブルが存在しないという Mysql::Error をスローします。
以下は、現在のベース クラスの状態を明らかにするためのコード スニペットです。
Class Mps < ActiveRecord::Base
self.abstract_class = true
establish_connection "mps"
end
子クラス:
Class TblAdmVsl < Mps
self.table_name = "tbladmvsl"
end
コードをできるだけDRYに保ちたいので、これを回避する方法はありますか。以下は、レールコンソールでこれを試したときに受け取ったエラーです
2.0.0-p247 :005 > TblAdmVsl.first
TblAdmVsl Load (4.5ms) SELECT `tbladmvsl`.* FROM `tbladmvsl` ORDER BY `tbladmvsl`.`id` ASC LIMIT 1
Mysql::Error: Table 'mps2_tbl.mps' doesn't exist: SHOW FULL FIELDS FROM `mps`
ActiveRecord::StatementInvalid: Mysql::Error: Table 'mps2_tbl.mps' doesn't exist: SHOW FULL FIELDS FROM `mps`
from /home/maru/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:286:in `query'
from /home/maru/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:286:in `block in execute'