Raise ArgumentError when passing nil to Relation#merge

nil or false should not be valid argument to the merge method.

Closes #12264
上级 e26fa7b9
* Raise `ArgumentError` when passing `nil` or `false` to `Relation#merge`.
These are not valid values to merge in a relation so it should warn the users
early.
*Rafael Mendonça França*
* Use `SCHEMA` instead of `DB_STRUCTURE` for specifiying structure file.
This makes the db:structure tasks consistent with test:load_structure.
......
......@@ -32,7 +32,7 @@ def merge(other)
elsif other
spawn.merge!(other)
else
self
raise ArgumentError, "invalid argument: #{other.inspect}."
end
end
......
......@@ -168,6 +168,22 @@ def test_references_values_dont_duplicate
assert_raises(ArgumentError) { Relation::HashMerger.new(nil, omg: 'lol') }
end
test 'merging nil or false raises' do
relation = Relation.new(FakeKlass, :b, nil)
e = assert_raises(ArgumentError) do
relation = relation.merge nil
end
assert_equal 'invalid argument: nil.', e.message
e = assert_raises(ArgumentError) do
relation = relation.merge false
end
assert_equal 'invalid argument: false.', e.message
end
test '#values returns a dup of the values' do
relation = Relation.new(FakeKlass, :b, nil).where! :foo
values = relation.values
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册