diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2012-02-13 09:11:33 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-02-13 09:11:33 -0800 |
commit | 04c0aea47ab6530af3e9e6aa7c8edb26e6dfdbe7 (patch) | |
tree | 33741d89dc5dcb35a18c07f66d406c182752884e /activerecord/test | |
parent | 3a5a01f7f6af2456acab1b662f618f326002ee5f (diff) | |
parent | 9f8b4d1510f66597bbe8732e507173217df9f14d (diff) | |
download | rails-04c0aea47ab6530af3e9e6aa7c8edb26e6dfdbe7.tar.gz rails-04c0aea47ab6530af3e9e6aa7c8edb26e6dfdbe7.tar.bz2 rails-04c0aea47ab6530af3e9e6aa7c8edb26e6dfdbe7.zip |
Merge pull request #5000 from flavorpill/master-with-multidb-association-fix
Fix associations with per-class/multiple database connections
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/multiple_db_test.rb | 12 | ||||
-rw-r--r-- | activerecord/test/fixtures/colleges.yml | 3 | ||||
-rw-r--r-- | activerecord/test/fixtures/courses.yml | 1 | ||||
-rw-r--r-- | activerecord/test/models/arunit2_model.rb | 3 | ||||
-rw-r--r-- | activerecord/test/models/college.rb | 5 | ||||
-rw-r--r-- | activerecord/test/models/course.rb | 5 | ||||
-rw-r--r-- | activerecord/test/schema/schema.rb | 5 | ||||
-rw-r--r-- | activerecord/test/support/connection.rb | 3 |
8 files changed, 35 insertions, 2 deletions
diff --git a/activerecord/test/cases/multiple_db_test.rb b/activerecord/test/cases/multiple_db_test.rb index e704322b5d..a802cfbf31 100644 --- a/activerecord/test/cases/multiple_db_test.rb +++ b/activerecord/test/cases/multiple_db_test.rb @@ -10,6 +10,7 @@ class MultipleDbTest < ActiveRecord::TestCase def setup @courses = create_fixtures("courses") { Course.retrieve_connection } + @colleges = create_fixtures("colleges") { College.retrieve_connection } @entrants = create_fixtures("entrants") end @@ -87,4 +88,15 @@ class MultipleDbTest < ActiveRecord::TestCase def test_arel_table_engines assert_equal Entrant.arel_engine, Bird.arel_engine end + + def test_associations_should_work_when_model_has_no_connection + begin + ActiveRecord::Model.remove_connection + assert_nothing_raised ActiveRecord::ConnectionNotEstablished do + College.first.courses.first + end + ensure + ActiveRecord::Model.establish_connection 'arunit' + end + end end diff --git a/activerecord/test/fixtures/colleges.yml b/activerecord/test/fixtures/colleges.yml new file mode 100644 index 0000000000..27591e0c2c --- /dev/null +++ b/activerecord/test/fixtures/colleges.yml @@ -0,0 +1,3 @@ +FIU: + id: 1 + name: Florida International University diff --git a/activerecord/test/fixtures/courses.yml b/activerecord/test/fixtures/courses.yml index 5ee1916003..de3a4a97e5 100644 --- a/activerecord/test/fixtures/courses.yml +++ b/activerecord/test/fixtures/courses.yml @@ -1,6 +1,7 @@ ruby: id: 1 name: Ruby Development + college: FIU java: id: 2 diff --git a/activerecord/test/models/arunit2_model.rb b/activerecord/test/models/arunit2_model.rb new file mode 100644 index 0000000000..04b8b15d3d --- /dev/null +++ b/activerecord/test/models/arunit2_model.rb @@ -0,0 +1,3 @@ +class ARUnit2Model < ActiveRecord::Base + self.abstract_class = true +end diff --git a/activerecord/test/models/college.rb b/activerecord/test/models/college.rb new file mode 100644 index 0000000000..c7495d7deb --- /dev/null +++ b/activerecord/test/models/college.rb @@ -0,0 +1,5 @@ +require_dependency 'models/arunit2_model' + +class College < ARUnit2Model + has_many :courses +end diff --git a/activerecord/test/models/course.rb b/activerecord/test/models/course.rb index 8a40fa740d..f3d0e05ff7 100644 --- a/activerecord/test/models/course.rb +++ b/activerecord/test/models/course.rb @@ -1,3 +1,6 @@ -class Course < ActiveRecord::Base +require_dependency 'models/arunit2_model' + +class Course < ARUnit2Model + belongs_to :college has_many :entrants end diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index d473680fdc..428a85ab4e 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -760,4 +760,9 @@ end Course.connection.create_table :courses, :force => true do |t| t.column :name, :string, :null => false + t.column :college_id, :integer +end + +College.connection.create_table :colleges, :force => true do |t| + t.column :name, :string, :null => false end diff --git a/activerecord/test/support/connection.rb b/activerecord/test/support/connection.rb index 60fea46fd3..11154c3797 100644 --- a/activerecord/test/support/connection.rb +++ b/activerecord/test/support/connection.rb @@ -1,4 +1,5 @@ require 'active_support/logger' +require_dependency 'models/college' require_dependency 'models/course' module ARTest @@ -15,6 +16,6 @@ module ARTest ActiveRecord::Model.logger = ActiveSupport::Logger.new("debug.log") ActiveRecord::Model.configurations = connection_config ActiveRecord::Model.establish_connection 'arunit' - Course.establish_connection 'arunit2' + ARUnit2Model.establish_connection 'arunit2' end end |