У меня есть 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)