mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Correctly determine if an attribute is uninitialized
In real usage, we give the builder a types hash with a default value of `Type::Value.new`. This means we need to explicitly check for the key, rather than the truthiness of the type to determine if it's a known but uninitialized attribute
This commit is contained in:
parent
0f29c21607
commit
3f63ac4e4d
2 changed files with 10 additions and 2 deletions
|
@ -65,7 +65,7 @@ module ActiveRecord
|
|||
|
||||
if values.key?(name)
|
||||
hash[name] = Attribute.from_database(name, values[name], type)
|
||||
elsif type
|
||||
elsif types.key?(name)
|
||||
hash[name] = Attribute.uninitialized(name, type)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -109,7 +109,15 @@ module ActiveRecord
|
|||
|
||||
test "fetch_value returns nil for unknown attributes" do
|
||||
attributes = attributes_with_uninitialized_key
|
||||
assert_nil attributes.fetch_value(:wibble)
|
||||
assert_nil attributes.fetch_value(:wibble) { "hello" }
|
||||
end
|
||||
|
||||
test "fetch_value returns nil for unknown attributes when types has a default" do
|
||||
types = Hash.new(Type::Value.new)
|
||||
builder = AttributeSet::Builder.new(types)
|
||||
attributes = builder.build_from_database
|
||||
|
||||
assert_nil attributes.fetch_value(:wibble) { "hello" }
|
||||
end
|
||||
|
||||
test "fetch_value uses the given block for uninitialized attributes" do
|
||||
|
|
Loading…
Reference in a new issue