Ruby on Rails + Active Record:在一个查询中有序,不同和随机

时间:2017-08-18 18:02:41

标签: ruby-on-rails postgresql activerecord

我有以下Active Record模型:

class Group < ApplicationRecord

  has_many :group_users

end

class GroupUser < ApplicationRecord

  belongs_to :group

end

我正在使用 PostgreSQL 作为 RDBMS Rails 5.1.1 。我想要检索具有10的第一个group_users组,随机排序。我也不想要任何重复项(假设group有很多group users)可能存在重复项。但是,以下查询不起作用,并且它的行为类似于distinct根本不存在:

Group.joins(:group_users).order("RANDOM()").select("groups.uid, RANDOM()").limit(10).distinct

1 个答案:

答案 0 :(得分:1)

那是因为你选择了RANDOM()。从select子句中删除它。

或者,试试这个:

Group.where(id: GroupUser.select(:group_id)).select(:uid).order("RANDOM()").limit(10)