У меня есть 2 модели:
class User < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
has_and_belongs_to_many :users
end
Я хочу создать область (что важно - для эффективности и для возможности привязки областей), которая возвращает пользователей, которые не принадлежат группам ЛЮБОЙ.
После многих попыток мне не удалось выполнить метод вместо области видимости, что делает collect
on User.all
уродливым и не правильным.
Любая помощь?
И, возможно, для второго вопроса: Мне удалось создать область, которая возвращает пользователей, принадлежащих к любой из заданных групп (заданных как массив идентификаторов).
scope :in_groups, lambda { |g|
{
:joins => :groups,
:conditions => {:groups => {:id => g}},
:select => "DISTINCT `users`.*" # kill duplicates
}
}
Может быть, лучше/красивее? (Использование Rails 3.0.9)