Odwrotność relacji has_many?

Jest model User. Ustawiona relacja has_many :domains.
user.domains daje mi wszystkie domains z nim skojarzone.
A jak prosto znaleźć wszystkie pozostałe domains nie skojarzone z userem.

user = User.find 1 no_user_domains = Domain.find(:all).map{|d| ! user.domain_ids.include?(d.id) }
Czy nie dałoby się tego zrobić samym zapytaniem SQL? Bez zaciąganie wszystkich rekordów?

Mniej więcej coś takiego:

Domain.find(:all, :conditions => ["id not in (?)", user.domain_ids])

Działa. Tylko trochę trzeba rozbudować warunek

no_user_domains = Domain.find(:all, user.domain_ids.empty? ? {} : {:conditions => ["id not in (?)", user.domain_ids]})

Dzięki

[quote=lsbb]no_user_domains = Domain.find(:all, user.domain_ids.empty? ? {} : {:conditions => ["id not in (?)", user.domain_ids]})
[/quote]
A może łatwiej:

Domain.named_scope(:not_belonging_to, lambda {|user| {:conditions => ['user_id <> ?' user.id]}}) Domain.not_belonging_to(user)