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