📅  最后修改于: 2023-12-03 15:04:46.983000             🧑  作者: Mango
在 Rails 中,distinct
方法可以帮助我们从数据库中获取不重复的记录。
在 ActiveRecord 查询中添加 distinct
方法即可:
Post.select(:category).distinct
以上代码将选择所有 Post
模型记录的唯一分类。
Category.select(:name).distinct
以上代码将选择所有唯一的分类名称。
我们可以在 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
以上代码将对创建时间排序,然后选择最近的唯一作者名称。