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

时间:2017-12-05 22:50:39

标签: sql ruby-on-rails model has-many

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

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

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

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

1 个答案:

答案 0 :(得分:2)

你可以尝试:

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

打破它:

Project.pluck(:user_id).uniq

会从您的项目中为您提供array个user_id。基本上,用户有项目。

然后:

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

返回ID不在具有项目的用户数组中的用户。