我有两个模型,项目和类别,它们之间具有多对多的关系。项目模型非常简单:
class Project < ActiveRecord::Base
has_and_belongs_to_many :categories
scope :in_categories, lambda { |categories|
joins(:categories).
where("categories.id in (?)", categories.collect(&:to_i))
}
end
:in_categories 范围采用类别 ID 数组(作为字符串),因此使用此范围我可以取回属于至少一个传入类别的每个项目。
但我真正想做的是过滤(更好的名字是:has_categories)。我只想获取属于传入的所有类别的项目。所以如果我传入 ["1", "3", "4"] 我只想获取属于所有类别的项目。