首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uniq返回uniq_by以外的其他结果。

uniq返回uniq_by以外的其他结果。
EN

Stack Overflow用户
提问于 2013-10-11 10:41:04
回答 3查看 166关注 0票数 1

直到现在,我使用uniq_by来统计唯一的项目用户。但是这个方法已经被废弃了,建议用uniq代替。但是uniq_by返回2(正确!)uniq返回3(不正确)。projectuser表如下所示:

代码语言:javascript
复制
id,user_id
1,1
2,1
3,2

以下是声明:

代码语言:javascript
复制
Projectuser.uniq_by {|p| p.user_id}.count --> 2
Projectuser.uniq {|p| p.user_id}.count --> 3

我需要改变什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-11 11:16:57

结果是严格的,因为uniq来自数组。要匹配SQL成语中的唯一性,需要使用distinct。

来自文档的示例

代码语言:javascript
复制
person.pets.select(:name).distinct
# => [#<Pet name: "Fancy-Fancy">]

尝试:

代码语言:javascript
复制
Projectuser.select(:id, :user_id).distinct
票数 0
EN

Stack Overflow用户

发布于 2013-10-11 11:06:42

ActiveReord版本的uniq似乎忽略了给定的块,只需检查对象是否为uniq。如果您查看源代码,就会看到它只是设置了一个标志。

请参阅http://apidock.com/rails/ActiveRecord/QueryMethods/uniq

您可以将其视为生成的sql-语句的修饰符。

票数 1
EN

Stack Overflow用户

发布于 2013-10-11 11:21:03

我用以下方法解决了这个问题:

代码语言:javascript
复制
Projectuser.uniq.pluck(:user_id)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19316183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档