Rails habtm и поиск записи без ассоциации

У меня есть 2 модели:

class User < ActiveRecord::Base
    has_and_belongs_to_many :groups
end

class Group < ActiveRecord::Base
    has_and_belongs_to_many :users
end

Я хочу создать область действия (это важно - для эффективности и для возможности объединения областей видимости), которая возвращает Пользователи, не входящие в ЛЮБУЮ групп. После многих попыток мне не удалось создать метод вместо области видимости, из-за которого собирает на User.all , что некрасиво и ... неправильно.

Есть помощь?

] И, возможно, для второго вопроса: Мне удалось создать область видимости, которая возвращает пользователей, которые принадлежат к любой из указанных групп (заданных в виде массива идентификаторов).

scope :in_groups, lambda { |g|
        {
          :joins      => :groups,
          :conditions => {:groups => {:id => g}},
          :select     => "DISTINCT `users`.*" # kill duplicates
        }
      }

Может ли это быть лучше / красивее? (Используя Rails 3.0.9)

12
задан schiza 11 August 2011 в 20:11
поделиться