📜  rails distinct (1)

📅  最后修改于: 2023-12-03 15:04:46.983000             🧑  作者: Mango

Rails distinct

在 Rails 中,distinct 方法可以帮助我们从数据库中获取不重复的记录。

如何使用

在 ActiveRecord 查询中添加 distinct 方法即可:

Post.select(:category).distinct

以上代码将选择所有 Post 模型记录的唯一分类。

实际应用
列出所有唯一的分类
Category.select(:name).distinct

以上代码将选择所有唯一的分类名称。

在 has_many 关系中使用

我们可以在 has_many 关系中使用 distinct 方法:

class Author < ApplicationRecord
  has_many :posts
  has_many :categories, through: :posts
end

Author.find(1).categories.select(:name).distinct

以上代码将选择作者 1 所有唯一文章分类的名称。

注意事项

如果你使用 distinct 方法前已经使用了其他方法,需要考虑哪些列将被删除重复项。

例如,在以下代码中,我们先按时间顺序 order,然后选择最近的唯一作者:

Author.order(created_at: :desc).select(:name).distinct

以上代码将对创建时间排序,然后选择最近的唯一作者名称。