首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails: uniq与distinct

Rails: uniq与distinct
EN

Stack Overflow用户
提问于 2016-09-19 14:16:31
回答 4查看 37.2K关注 0票数 60

有人能简单地向我解释一下uniqdistinct两种方法在使用上的区别吗?

我见过这两种用法都是在类似的背景下使用的,但区别对我来说并不十分清楚。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-09-19 16:48:33

Rails查询的作用类似于数组,因此.uniq产生的结果与.distinct相同,但是

  • .distinct是sql查询方法
  • .uniq是数组方法

注意事项:在Rails中,建议使用5+ Relation#uniq代替Relation#distinct。请参阅Notes.html#active-record-降级

提示

在调用.includes之前使用.uniq/.distinct可以减缓或加速应用程序,因为

  • uniq不会产生额外的sql查询
  • distinct就行了

但这两个结果都是一样的

示例:

代码语言:javascript
复制
users = User.includes(:posts)
puts users
# First sql query for includes

users.uniq
# No sql query! (here you speed up you app)
users.distinct
# Second distinct sql query! (here you slow down your app)

这对于生成表演性应用程序很有用。

提示

同样的作品

  • .size.count
  • present?.exists?
  • mappluck
票数 113
EN

Stack Overflow用户

发布于 2020-01-22 21:31:42

Rails 5.1从Activerecord关系中删除了uniq方法,并添加了不同的方法.

  • 如果使用uniq with query,它将只将Activerecord Relaction转换为Array类.
  • 如果添加了uniq .(即不能执行User.active.uniq.subscribed,它会抛出错误undefined method subscribed for Array ),就不会有查询链了。
  • 如果您的DB很大,并且您只想获取所需的不同条目,那么使用Activerecord关系查询的不同方法是很好的.
票数 7
EN

Stack Overflow用户

发布于 2016-09-19 14:28:25

来自文档

uniq(value = true) Alias for ActiveRecord::QueryMethods#distinct

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39575398

复制
相关文章

相似问题

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