1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #31615 from cben/type_for_attribute-symbol

Allow type_for_attribute(:symbol)
This commit is contained in:
Ryuta Kamizono 2018-01-29 10:46:35 +09:00 committed by GitHub
commit 3cf0973bc7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View file

@ -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

View file

@ -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