I am writing a payroll system that will integrate with a pre-existing system. The original system had a master database that handled user management and some global configuration, below that there are multiple databases each identical in structure, basically each database is one companies payroll database, all these are tied to the main database because it belongs to a parent company who has many subsidiaries each with their own HR department.
What I was wondering is if there is any way that I can, based on either a cookie or another method that stores what company they wish to connect to, dynamically change the ActiveRecord's target database based on their input using a before filter?
Here's an example:
User A logs in to the site, page loads with available companies that the user has permission to access, user will then select a company, they have admin privileges in that company, they add an employee, before that action is run, rails will switch the connection to the appropriate database then add the record.
You can use ActiveRecord::Base#establish_connection, to connect to the desired database.
You could pass the db credentials to establish_connection
as a Hash
establish_connection(
adapter: 'mysql2',
encoding: 'utf8',
pool: 5,
username: 'me',
password: 'mypassword'
)
There are more examples here
I'm not sure you can do it in run time, since the database connection is coupled to the class (model)
However, you can make different classes to be connected to different databases I don't want to copy someone else answer, so just look at this post
Connecting Rails 3.1 with Multiple Databases
and give him the credit
Good luck
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With