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,那么这个查询也将返回用户记录...
答案 0 :(得分:0)
我想你想找到没有联系人的所有用户,其密钥等于true?
User.where.not(Contact.where("contacts.user_id = users.id and contacts.key = 't').exists)