Rails:uniq vs. distinct

有人可以简单地向我解释uniqdistinct方法之间的distinct吗?

我已经看到两者都在类似的背景下使用,但差异对我来说并不十分清楚。

  • .distinct方法用于sql查询
  • .uniq方法用于数组

rails查询也是一个数组,因此.uniq产生与.distinct相同的结果

注意:在Rails 5+中,不推荐使用Relation#distinct Relation#uniq ,建议使用Relation#distinct 。 见http://edgeguides.rubyonrails.org/5_0_release_notes.html#active-record-deprecations

从文档 :

uniq(value = true)

ActiveRecord::QueryMethods#distinct 别名 ActiveRecord::QueryMethods#distinct

它不完全回答你的问题,但我所知道的是:

如果我们考虑ActiveRecord上下文,那么uniq只是distinct的别名。 并且两者都可以在查询结果集上删除重复项(最多可以说是一个级别)。

数组上下文中,uniq非常强大,即使元素是嵌套的,它也会删除重复项。 例如

 arr = [["first"], ["second"], ["first"]] 

如果我们这样做

 arr.uniq 

答案是: [["first"], ["second"]]

因此,即使元素是块,它也会深入并消除重复。

希望它在某些方面对你有所帮助。