提交 c1dc6470 编写于 作者: Y Yves Senn

Merge pull request #14773 from eric-chahin/null_relation_fix

Changed the NullRelation so that when count is called with #group it wil...
* Fixed a problem where count used with a grouping was not returning a Hash.
Fixes #14721.
*Eric Chahin*
* `sanitize_sql_like` helper method to escape a string for safe use in a SQL
LIKE statement.
......
......@@ -43,7 +43,7 @@ def to_sql
end
def count(*)
0
calculate :count, nil
end
def sum(*)
......@@ -54,7 +54,7 @@ def calculate(operation, _column_name, _options = {})
# TODO: Remove _options argument as soon we remove support to
# activerecord-deprecated_finders.
if operation == :count
0
group_values.any? ? Hash.new : 0
else
nil
end
......
......@@ -14,6 +14,7 @@
require 'models/engine'
require 'models/tyre'
require 'models/minivan'
require 'models/aircraft'
class RelationTest < ActiveRecord::TestCase
......@@ -365,6 +366,16 @@ def test_null_relation_where_values_hash
assert_equal({ 'salary' => 100_000 }, Developer.none.where(salary: 100_000).where_values_hash)
end
def test_null_relation_count
ac = Aircraft.new
assert_equal Hash.new, ac.engines.group(:id).count
assert_equal 0, ac.engines.count
ac.save
assert_equal Hash.new, ac.engines.group(:id).count
assert_equal 0, ac.engines.count
end
def test_joins_with_nil_argument
assert_nothing_raised { DependentFirm.joins(nil).first }
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册