diff options
| -rw-r--r-- | activerecord/lib/active_record/model_schema.rb | 3 | ||||
| -rw-r--r-- | activerecord/test/cases/reflection_test.rb | 14 | 
2 files changed, 16 insertions, 1 deletions
| diff --git a/activerecord/lib/active_record/model_schema.rb b/activerecord/lib/active_record/model_schema.rb index fa7537c1a3..60823815fa 100644 --- a/activerecord/lib/active_record/model_schema.rb +++ b/activerecord/lib/active_record/model_schema.rb @@ -361,8 +361,9 @@ module ActiveRecord        # it).        #        # +attr_name+ The name of the attribute to retrieve the type for. Must be -      # a string +      # a string or a symbol.        def type_for_attribute(attr_name, &block) +        attr_name = attr_name.to_s          if block            attribute_types.fetch(attr_name, &block)          else diff --git a/activerecord/test/cases/reflection_test.rb b/activerecord/test/cases/reflection_test.rb index 44055e5ab6..2b605e5a60 100644 --- a/activerecord/test/cases/reflection_test.rb +++ b/activerecord/test/cases/reflection_test.rb @@ -66,6 +66,9 @@ class ReflectionTest < ActiveRecord::TestCase    def test_column_string_type_and_limit      assert_equal :string, @first.column_for_attribute("title").type +    assert_equal :string, @first.column_for_attribute(:title).type +    assert_equal :string, @first.type_for_attribute("title").type +    assert_equal :string, @first.type_for_attribute(:title).type      assert_equal 250, @first.column_for_attribute("title").limit    end @@ -81,6 +84,9 @@ class ReflectionTest < ActiveRecord::TestCase    def test_integer_columns      assert_equal :integer, @first.column_for_attribute("id").type +    assert_equal :integer, @first.column_for_attribute(:id).type +    assert_equal :integer, @first.type_for_attribute("id").type +    assert_equal :integer, @first.type_for_attribute(:id).type    end    def test_non_existent_columns_return_null_object @@ -89,6 +95,9 @@ class ReflectionTest < ActiveRecord::TestCase      assert_equal "attribute_that_doesnt_exist", column.name      assert_nil column.sql_type      assert_nil column.type + +    column = @first.column_for_attribute(:attribute_that_doesnt_exist) +    assert_instance_of ActiveRecord::ConnectionAdapters::NullColumn, column    end    def test_non_existent_types_are_identity_types @@ -98,6 +107,11 @@ class ReflectionTest < ActiveRecord::TestCase      assert_equal object, type.deserialize(object)      assert_equal object, type.cast(object)      assert_equal object, type.serialize(object) + +    type = @first.type_for_attribute(:attribute_that_doesnt_exist) +    assert_equal object, type.deserialize(object) +    assert_equal object, type.cast(object) +    assert_equal object, type.serialize(object)    end    def test_reflection_klass_for_nested_class_name | 
