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 不在具有项目的用户数组中的用户。
在下面的关联中,我想收集所有没有任何项目的用户->
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 不在具有项目的用户数组中的用户。