Class: ActionController::Base
- Inherits:
-
Object
- Object
- ActionController::Base
- Defined in:
- lib/multi_db/action_controller_patches.rb
Instance Method Summary collapse
- #connect_to_master_database ⇒ Object
-
#connect_to_organization_database ⇒ Object
manually establish a connection to the proper database.
Instance Method Details
#connect_to_master_database ⇒ Object
50 51 52 |
# File 'lib/multi_db/action_controller_patches.rb', line 50 def connect_to_master_database ActiveRecord::Base.connect_to_master end |
#connect_to_organization_database ⇒ Object
manually establish a connection to the proper database
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/multi_db/action_controller_patches.rb', line 5 def connect_to_organization_database @org = nil # request is first priority if params[:org_code] if session[:org_code] && session[:org_code] != params[:org_code] reset_session end @org = MultiDB::Organization.active.where(:code => params[:org_code]).first end # try hostname if we don't already have a code in the session if !@org && !session[:org_code] && request && request.host @org ||= MultiDB::Organization.active.where(:code => $1.gsub('-', '_')).first if request.host =~ /^([-\w\d]+)/ @org ||= MultiDB::Organization.active.includes(:hosts).where('organization_hosts.host = ?', request.host).first end if @org if session[:org_code] != @org.code session[:org_code] = @org.code session[:org_name] = @org.name end end if session[:org_code] @org ||= MultiDB::Organization.active.where(:code => session[:org_code]).first if @org ActiveRecord::Base.connect_to_organization(session[:org_code], true) return @org end end if Rails.env.test? && ENV['RAILS_ORG'] @org ||= MultiDB::Organization.active.where(:code => ENV['RAILS_ORG']).first if @org ActiveRecord::Base.connect_to_organization(session[:org_code], true) return @org end end # if we don't issue an establish_connection by now, connect to default db (sessions) session[:org_code] = session[:org_name] = nil ActiveRecord::Base.connect_to_sessions end |