Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use correct DB connection for generated HABTM table #21165

Merged
merged 1 commit into from
Aug 11, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def through_model

join_model = Class.new(ActiveRecord::Base) {
class << self;
attr_accessor :class_resolver
attr_accessor :left_model
attr_accessor :name
attr_accessor :table_name_resolver
attr_accessor :left_reflection
Expand All @@ -58,7 +58,7 @@ def self.table_name
end

def self.compute_type(class_name)
class_resolver.compute_type class_name
left_model.compute_type class_name
end

def self.add_left_association(name, options)
Expand All @@ -72,11 +72,15 @@ def self.add_right_association(name, options)
self.right_reflection = _reflect_on_association(rhs_name)
end

def self.retrieve_connection
left_model.retrieve_connection
end

}

join_model.name = "HABTM_#{association_name.to_s.camelize}"
join_model.table_name_resolver = habtm
join_model.class_resolver = lhs_model
join_model.left_model = lhs_model

join_model.add_left_association :left_side, anonymous_class: lhs_model
join_model.add_right_association association_name, belongs_to_options(options)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
require 'models/computer'
require 'models/project'
require 'models/company'
require 'models/course'
require 'models/customer'
require 'models/order'
require 'models/categorization'
Expand All @@ -14,6 +15,7 @@
require 'models/parrot'
require 'models/person'
require 'models/pirate'
require 'models/professor'
require 'models/treasure'
require 'models/price_estimate'
require 'models/club'
Expand Down Expand Up @@ -923,4 +925,14 @@ def test_association_force_reload_with_only_true_is_deprecated

assert_deprecated { developer.projects(true) }
end

def test_alternate_database
professor = Professor.create(name: "Plum")
course = Course.create(name: "Forensics")
assert_equal 0, professor.courses.count
assert_nothing_raised do
professor.courses << course
end
assert_equal 1, professor.courses.count
end
end
5 changes: 5 additions & 0 deletions activerecord/test/models/professor.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
require_dependency 'models/arunit2_model'

class Professor < ARUnit2Model
has_and_belongs_to_many :courses
end
9 changes: 9 additions & 0 deletions activerecord/test/schema/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -939,3 +939,12 @@ def except(adapter_names_to_exclude)
College.connection.create_table :colleges, force: true do |t|
t.column :name, :string, null: false
end

Professor.connection.create_table :professors, force: true do |t|
t.column :name, :string, null: false
end

Professor.connection.create_table :courses_professors, id: false, force: true do |t|
t.references :course
t.references :professor
end
1 change: 1 addition & 0 deletions activerecord/test/support/connection.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
require 'active_support/logger'
require 'models/college'
require 'models/course'
require 'models/professor'

module ARTest
def self.connection_name
Expand Down