我有两个嵌套对象:RecruitmentUser has_many RecruitmentUserStatusLog。 RecruitmentUserStatusLog有一个名为status的属性。我想选择具有状态='已处理'的RecruitmentUserStatusLog和状态='已回答'的RecruitmentUserStatusLog的RecruitmentUsers。它不能只是其中之一..我尝试使用ActiveRecord进行一些查询,但我不知道它是否是最有效的方式..我试过这个:
RecruitmentUserStatusLog.where(status: ['processed', 'answered']).pluck(:recruitment_user_id).group_by {|id| id}.values.select{|duplicate_id| duplicate_id.size > 1}
选择部分仅用于获取重复的id的出现(recruit_user_id具有状态'已处理'和recruitment_user_id,其状态为'已回答')。
但是我认为这是很多工作,也许还有一种更优雅的方式来进行这种查询..我已经搜索过但没有找到它..有人可以帮助我吗?
答案 0 :(得分:1)
试试这个
user_ids = RecruitmentUserStatusLog.where(status: ['processed', 'answered'])
.group(:recruitment_user_id)
.having("count(recruitment_user_id) > 1")
.count
.keys
users = RecruitmentUser.find(user_ids)