问题
I am new to rails, don't know how to access multiple databases in rails single application.
I will try like this
config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password: root
socket: /var/run/mysqld/mysqld.sock
reconnect: true
development:
<<: *default
database: connection_development
<<: *default
database: connection_test
second database
log_database_production:
adapter: mysql2
encoding: utf8
pool: 5
host: 192.168.100.97
port: 3306 #ip address of server with other postgres database
username: root
password: root
database: hrms_development
reconnect: true
then i don't know how to proceed..
回答1:
For multiple database connection, you need to add the following codes to the database.yml file. Here, I am giving the example of connecting two databases from a rails application
config/database.yml
development:
adapter: mysql2
database: db1_dev
username: root
password: xyz
host: localhost
development_sec:
adapter: mysql2
database: db2_dev
username: root
password: xyz
host: localhost
production:
adapter: mysql2
database: db1_prod
username: root
password: xyz
host: your-production-ip
production_sec:
adapter: mysql2
database: db2_prod
username: root
password: xyz
host: your-production-ip
Here I have used two databases for the development and production environment.
Now we need to connect the model to databases. When you are running your application in development and production mode, all the models will be mapped through the development and production db parameters those been mentioned in your database.yml. So for some model we need to connect to other database.
Lets assume that, we have two models User and Category. The users table is in db1_dev and db1_prod, the categories table in db2_dev and db2_prod.
Category model
class Category < ActiveRecord::Base
establish_connection "#{Rails.env}_sec"
end
Similarly, when you adding the new migration for the second database, need to add following code to it.
class CreateRewards < ActiveRecord::Migration
def connection
ActiveRecord::Base.establish_connection("#{Rails.env}_sec").connection
end
def change
# your code goes here.
end
end
Hope it will work for you :) .
来源:https://stackoverflow.com/questions/47448715/how-to-access-multiple-databases-in-single-rails-application-in-rails-4