我試圖在rails 5.0.0.beta1
中實現兩個數據庫設置。一切似乎都很順利,但我遇到了一些奇怪的事情。模型連接到指定的數據庫,關聯工作,遷移(經過一些調整)也可以正常工作。運行遷移後,在兩個數據庫中都會出現一個名爲active_record_internal_metadatas
的附加表。當我在rails 4.2.5
上測試這個設置時,沒有這種東西。有人可以解釋這個問題嗎?Rails 5.0.0.beta1,兩個數據庫安裝程序創建額外的active_record_internal_metadatas表
的雙重數據庫設置的設置:
database.yml
default: &default adapter: mysql2 encoding: utf8 pool: 5 username: root password: socket: /tmp/mysql.sock development: <<: *default database: app_name_development_first development_second: <<: *default database: app_name_development_second
second_db_connection.rb
- 它處理到第二個數據庫連接的模型。應該在第二個數據庫中的所有模型都必須從這個模型繼承。class SecondDbConnection < ActiveRecord::Base establish_connection "#{Rails.env}_second".to_sym self.abstract_class = true end
application_controller.rb
- 第二數據庫class ApplicationController < ActionController::API around_filter :cache_other_db_connections private def cache_other_db_connections SecondDbConnection.connection.cache { yield } end end
db.rake
緩存連接 - 覆蓋遷移任務namespace :db do task :migrate do Rake::Task['db:migrate_first'].invoke Rake::Task['db:migrate_second'].invoke end task :migrate_first do ActiveRecord::Base.establish_connection ("#{Rails.env}".to_sym) ActiveRecord::Migrator.migrate('db/db_first/migrate/') ActiveRecord::Base.connection.close end task :migrate_second do ActiveRecord::Base.establish_connection ("#{Rails.env}_second".to_sym) ActiveRecord::Migrator.migrate('db/db_second/migrate/') ActiveRecord::Base.connection.close end end
非常感謝,這個公關並沒有出現,當我googling它:) –