Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
647d18c9
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
647d18c9
编写于
1月 26, 2013
作者:
R
Rafael Mendonça França
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #9078 from senny/6865_ar_count_with_uniq
`#count` in conjunction with `#uniq` performs distinct count.
上级
9df25844
648def40
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
15 addition
and
1 deletion
+15
-1
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+9
-0
activerecord/lib/active_record/relation/calculations.rb
activerecord/lib/active_record/relation/calculations.rb
+2
-1
activerecord/test/cases/calculations_test.rb
activerecord/test/cases/calculations_test.rb
+4
-0
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
647d18c9
## Rails 4.0.0 (unreleased) ##
*
When
`#count`
is used in conjunction with
`#uniq`
we perform
`count(:distinct => true)`
.
Fix #6865.
Example:
relation.uniq.count # => SELECT COUNT(DISTINCT *)
*Yves Senn + Kaspar Schiess*
*
PostgreSQL ranges type support. Includes: int4range, int8range,
numrange, tsrange, tstzrange, daterange
...
...
activerecord/lib/active_record/relation/calculations.rb
浏览文件 @
647d18c9
...
...
@@ -192,7 +192,8 @@ def has_include?(column_name)
def
perform_calculation
(
operation
,
column_name
,
options
=
{})
operation
=
operation
.
to_s
.
downcase
distinct
=
options
[
:distinct
]
# If #count is used in conjuction with #uniq it is considered distinct. (eg. relation.uniq.count)
distinct
=
options
[
:distinct
]
||
self
.
uniq_value
if
operation
==
"count"
column_name
||=
(
select_for_count
||
:all
)
...
...
activerecord/test/cases/calculations_test.rb
浏览文件 @
647d18c9
...
...
@@ -341,6 +341,10 @@ def test_count_with_column_parameter
assert_equal
5
,
Account
.
count
(
:firm_id
)
end
def
test_count_with_uniq
assert_equal
4
,
Account
.
select
(
:credit_limit
).
uniq
.
count
end
def
test_count_with_column_and_options_parameter
assert_equal
2
,
Account
.
where
(
"credit_limit = 50 AND firm_id IS NOT NULL"
).
count
(
:firm_id
)
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录