Fild具有特定关系属性的所有记录

时间:2015-09-21 14:33:29

标签: sql postgresql activerecord

class User < ActiveRecord::Base
 has_many :contacts
end

class Contact < ActiveRecord::Base
 belongs_to :user
end

我如何使用ActiveRecord让所有没有联系人的用户或将所有“key”属性设置为false或nil的联系人?

我只能这样做:

user.includes(:contacts).group("users.id", "contacts.id").having("(COUNT(contacts.id) = 0) OR ((contacts.key IS NOT NULL) AND (contacts.key IS NOT true))").references(:contacts).uniq

但是如果这个查询有多个联系人,并且只有其中一个将'key'设置为false,那么这个查询也将返回用户记录...

1 个答案:

答案 0 :(得分:0)

我想你想找到没有联系人的所有用户,其密钥等于true?

User.where.not(Contact.where("contacts.user_id = users.id and contacts.key = 't').exists)