Tag: 存在

Rails:如何选择没有特定相关(关联)对象的记录(SQL EXISTS简要操作方法)

假设我们有用户: class User < ActiveRecord::Base has_many :connections has_many :groups, through: :connections end 和团体: class Group < ActiveRecord::Base has_many :connections has_many :users, through: :connections end 基本上,标准的多对多连接: class Connection belongs_to :user belongs_to :group end 我打算做的是: 仅选择不属于给定的一组组的用户(具有ID的组[4,5,6] ) 仅选择属于一组( [1,2,3] )且不属于另一组( [4,5,6] )的用户 仅选择不属于组的用户 另外,我不想: 从数据库中获取大量数据以使用Ruby代码对其进行操作。 我知道在CPU和内存方面效率低下(Ruby比任何常用的数据库引擎慢得多,通常我想依靠数据库引擎来完成繁重的工作) 我尝试了像User.joins(:group).where(group_id: [1,2,3]).where.not(group_id: [4,5,6]) ,它们返回错误的结果(结果中的一些用户)集合属于组4,5,6 以及 1,2,3) 我不想仅仅为了检查存在而进行连接,因为我知道对于DB来说这是一个非常复杂的(即CPU /内存密集型)操作