Rails 如何查找存在 has_many 关系的记录?

Rails how to find records where the has_many relation exists?

在下面的关联中,我想收集所有没有任何项目的用户->

class User <  ActiveRecord::Base    
  has_many :projects, :foreign_key => :user_id  
end

class Projects < ActiveRecord::Base 
  belongs_to :user, :foreign_key => "user_id"
end

从用户模型中,如何获取所有没有任何项目的用户?我尝试使用 includes 和 join 但没有得到预期的结果

你可以试试:

User.where.not(id: Project.pluck(:user_id).uniq)

分解:

Project.pluck(:user_id).uniq

将从您的项目中获得 array 的 user_ids。本质上,用户有项目。

然后:

User.where.not(id: Project.pluck(:user_id).uniq)

returns 个 ID 不在具有项目的用户数组中的用户。