diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 37d0ca53e44717d2d0680d8157de9b4978f9ebd5..5a9b781b72832a7afb8c20602f35f97f1cd8150b 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fix column type detection while loading fixtures. Closes #7987 [roderickvd] + * Document deep eager includes. #6267 [Josh Susser, Dan Manges] * Document warning that associations names shouldn't be reserved words. #4378 [murphy@cYcnus.de, Josh Susser] diff --git a/activerecord/lib/active_record/fixtures.rb b/activerecord/lib/active_record/fixtures.rb index 96fd0c57af2794fac1f2534be0fe1a103c33676f..c837fd7b50db4d1112b8c6bb8bf6f5b2cde6715a 100755 --- a/activerecord/lib/active_record/fixtures.rb +++ b/activerecord/lib/active_record/fixtures.rb @@ -415,7 +415,7 @@ def value_list klass = @class_name.constantize rescue nil list = @fixture.inject([]) do |fixtures, (key, value)| - col = klass.columns_hash[key] if klass.kind_of?(ActiveRecord::Base) + col = klass.columns_hash[key] if klass.respond_to?(:ancestors) && klass.ancestors.include?(ActiveRecord::Base) fixtures << ActiveRecord::Base.connection.quote(value, col).gsub('[^\]\\n', "\n").gsub('[^\]\\r', "\r") end list * ', ' diff --git a/activerecord/test/fixtures_test.rb b/activerecord/test/fixtures_test.rb index 7ccfc9be86902ea683e0fef7b6195dbd00714b64..d9973683cc738fe9193e0b23ac93490d85b071a4 100755 --- a/activerecord/test/fixtures_test.rb +++ b/activerecord/test/fixtures_test.rb @@ -12,13 +12,15 @@ class FixturesTest < Test::Unit::TestCase self.use_instantiated_fixtures = true self.use_transactional_fixtures = false - fixtures :topics, :developers, :accounts, :tasks, :categories, :funny_jokes + fixtures :topics, :developers, :accounts, :tasks, :categories, :funny_jokes, :binaries - FIXTURES = %w( accounts companies customers + FIXTURES = %w( accounts binaries companies customers developers developers_projects entrants movies projects subscribers topics tasks ) MATCH_ATTRIBUTE_NAME = /[a-zA-Z][-_\w]*/ + BINARY_FIXTURE_PATH = File.dirname(__FILE__) + '/fixtures/flowers.jpg' + def test_clean_fixtures FIXTURES.each do |name| fixtures = nil @@ -100,7 +102,6 @@ def test_insert_with_datetime assert first end - def test_bad_format path = File.join(File.dirname(__FILE__), 'fixtures', 'bad_fixtures') Dir.entries(path).each do |file| @@ -174,7 +175,6 @@ def test_omap_fixtures end end - def test_yml_file_in_subdirectory assert_equal(categories(:sub_special_1).name, "A special category in a subdir file") assert_equal(categories(:sub_special_1).class, SpecialCategory) @@ -185,7 +185,11 @@ def test_subsubdir_file_with_arbitrary_name assert_equal(categories(:sub_special_3).class, SpecialCategory) end - + def test_binary_in_fixtures + assert_equal 1, @binaries.size + data = File.read(BINARY_FIXTURE_PATH).freeze + assert_equal data, @flowers.data + end end if Account.connection.respond_to?(:reset_pk_sequence!)