Wielokrotne połączenie z bazą danych w Railsach
Używam active_delegate do wielokrotnego połączenia w Railsach. Tutaj używam mysql jako master_database dla niektórych modeli i postgresql dla niektórych innych modeli.
Problem polega na tym, że gdy próbuję uzyskać dostęp do modeli mysql, otrzymuję błąd poniżej! Ślad stosu pokazuje, że nadal używa adaptera postgresql, aby uzyskać dostęp do moich modeli mysql!
RuntimeError: ERROR C42P01 Mrelation "categories" does not exist P15 F.\src\backend\parser\parse_relation.c L886 RparserOpenTable: SELECT * FROM "categories"
STACKTRACE
===========
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract_adapter.rb:212:in `log'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/postgresql_adapter.rb:507:in `execute'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/postgresql_adapter.rb:985:in `select_raw'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/postgresql_adapter.rb:972:in `select'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:60:in `select_all'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:81:in `cache_sql'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:60:in `select_all'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:661:in `find_by_sql'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:1553:in `find_every'
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:615:in `find'
D:/ROR/Aptana/dedomenon/app/models/category.rb:50:in `get_all_with_exclusive_scope'
D:/ROR/Aptana/dedomenon/app/models/category.rb:50:in `get_all_with_exclusive_scope'
D:/ROR/Aptana/dedomenon/app/controllers/categories_controller.rb:48:in `index'
tutaj jest mójdatabase.yml
plik
postgre: &postgre
adapter: postgresql
database: codex
host: localhost
username: postgres
password: root
port: 5432
mysql: &mysql
adapter: mysql
database: project
host: localhost
username: root
password: root
port: 3306
development:
<<: *postgre
test:
<<: *postgre
production:
<<: *postgre
master_database:
<<: *mysql
i mójmaster_database
model jest taki
class Category < ActiveRecord::Base
delegates_connection_to :master_database, :on => [:create, :save, :destroy]
end
Każdy ma jakieś rozwiązanie?