Я пытаюсь создать области, чтобы найти все галереи по определенному типу категории, например «Стиль». В конце концов, они будут связаны для фильтрации по нескольким типам категорий, но я не могу заставить работать первую.
Вот модели:
Галерея:
has_many :gallery_categories, :class_name => "GalleryCategories", :dependent => :destroy
has_many :categories, :through => gallery_categories
has_many :colors, :through => gallery_categories, :source => :category, :conditions => {:type => "Color"}
has_many :styles, :through => gallery_categories, :source => :category, :conditions => {:type => "Style"}
... и многие другие категории ...
Категория:
:has_many :gallery_categories
:has_many :galleries, :through => :gallery_categories
GalleryCategories:
:belongs_to :gallery
:belongs_to :category
Я пытаюсь сделать что-то подобное в Галерее:
:scope :by_style, lambda {|style| joins(:styles).where(:category => {:name => style})}
Тогда, например, я бегу
Gallery.by_style ( "Современник")
И мне возвращают 181 галерею, когда есть только 40 галерей, и в этом примере должна быть возвращена только одна со стилем «Современность».
Вот результирующий SQL:
SELECT `galleries`.* FROM `galleries` INNER JOIN `gallery_categories` ON `galleries`.`id` = `gallery_categories`.`gallery_id` INNER JOIN `categories` ON `categories`.`type` = 'Style' WHERE `categories`.`name` = 'Contemporary'
Есть идеи? Заранее спасибо.