From 2a1b45af56d6c0ec39941c50ff98bf2e6d74d274 Mon Sep 17 00:00:00 2001 From: Will Bryant Date: Mon, 8 Sep 2014 23:32:42 +1200 Subject: fix fixtures not loading if a belongs_to association is defined with a :foreign_key option that's a symbol --- activerecord/lib/active_record/fixtures.rb | 2 +- activerecord/test/cases/fixtures_test.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/fixtures.rb b/activerecord/lib/active_record/fixtures.rb index 1724fa893d..4044f5f7b2 100644 --- a/activerecord/lib/active_record/fixtures.rb +++ b/activerecord/lib/active_record/fixtures.rb @@ -661,7 +661,7 @@ module ActiveRecord row[association.foreign_type] = $1 end - fk_type = association.active_record.columns_hash[association.foreign_key].type + fk_type = association.active_record.columns_hash[fk_name].type row[fk_name] = ActiveRecord::FixtureSet.identify(value, fk_type) end when :has_many diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb index 385ec48005..e96f6cb67a 100644 --- a/activerecord/test/cases/fixtures_test.rb +++ b/activerecord/test/cases/fixtures_test.rb @@ -810,6 +810,15 @@ class FoxyFixturesTest < ActiveRecord::TestCase assert admin_accounts(:signals37).users.include?(admin_users(:david)) assert_equal 2, admin_accounts(:signals37).users.size end + + class Nemesis < ActiveRecord::Base + self.table_name = "mateys" + belongs_to :mortal_enemy, :class_name => 'Pirate', :foreign_key => :target_id + end + + def test_symbol_foreign_key_id + ActiveRecord::FixtureSet.create_fixtures(FIXTURES_ROOT, "nemeses", "nemeses" => Nemesis) + end end class ActiveSupportSubclassWithFixturesTest < ActiveRecord::TestCase -- cgit v1.2.3 From c36ca0547f41373fa3cd474722bc51e5446a1630 Mon Sep 17 00:00:00 2001 From: Arthur Neves Date: Mon, 22 Sep 2014 13:12:19 -0400 Subject: Better regression test for Fixtures with fk as a symbol --- activerecord/test/cases/fixtures_test.rb | 11 +---------- activerecord/test/models/parrot.rb | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) (limited to 'activerecord') diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb index e96f6cb67a..1050047a43 100644 --- a/activerecord/test/cases/fixtures_test.rb +++ b/activerecord/test/cases/fixtures_test.rb @@ -675,7 +675,7 @@ class FoxyFixturesTest < ActiveRecord::TestCase if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL' require 'models/uuid_parent' require 'models/uuid_child' - fixtures :uuid_parents, :uuid_children + fixtures :uuid_parents, :uuid_children end def test_identifies_strings @@ -810,15 +810,6 @@ class FoxyFixturesTest < ActiveRecord::TestCase assert admin_accounts(:signals37).users.include?(admin_users(:david)) assert_equal 2, admin_accounts(:signals37).users.size end - - class Nemesis < ActiveRecord::Base - self.table_name = "mateys" - belongs_to :mortal_enemy, :class_name => 'Pirate', :foreign_key => :target_id - end - - def test_symbol_foreign_key_id - ActiveRecord::FixtureSet.create_fixtures(FIXTURES_ROOT, "nemeses", "nemeses" => Nemesis) - end end class ActiveSupportSubclassWithFixturesTest < ActiveRecord::TestCase diff --git a/activerecord/test/models/parrot.rb b/activerecord/test/models/parrot.rb index e76e83f314..8c83de573f 100644 --- a/activerecord/test/models/parrot.rb +++ b/activerecord/test/models/parrot.rb @@ -19,7 +19,7 @@ class LiveParrot < Parrot end class DeadParrot < Parrot - belongs_to :killer, :class_name => 'Pirate' + belongs_to :killer, :class_name => 'Pirate', foreign_key: :killer_id end class FunkyParrot < Parrot -- cgit v1.2.3