Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save patakijv/60d61aede6a248bbfa8612f5f8506717 to your computer and use it in GitHub Desktop.
Save patakijv/60d61aede6a248bbfa8612f5f8506717 to your computer and use it in GitHub Desktop.
class ActiveRecord::Base
def self.table_name_prefix
"appname."
end
end
class TransactionalBase < ActiveRecord::Base
self.abstract_class = true
establish_connection "#{RAILS_ENV}-transactional"
def self.table_name_prefix
"appname_transactional."
end
end
# Now you can do JOINs across two databases on the same host
# provided your permissions are set up appropriately
class Hospital < AcitveRecord::Base
has_many :hospital_doctors
has_many :doctors, :through => :hospital_doctors
end
class HospitalDoctor < ActiveRecord::Base
belongs_to :hospital
belongs_to :doctor
end
class Doctor < TransactionalBase
has_many :hospital_doctors
has_many :hospitals, :through => :hospital_doctors
end
Example:
> Hospital.first.doctors
Will use the following SQL:
SELECT `appname_transactional`.`doctors`.* FROM `appname_transactional`.`doctors` INNER JOIN `appname`.`hospital_doctors` ON `appname_transactional`.`doctors`.id = `appname`.`hospital_doctors`.doctor_id WHERE ((`appname`.`hospital_doctors`.hospital_id = 1))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment