我正在尝试创建范围以按特定类别类型查找所有图库,例如“样式”。最终,它们将被链接以按多种类别类型进行过滤,但我无法让第一种类型过滤。
以下是模型:
画廊:
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
我想在Gallery中做这样的事情:
:scope :by_style, lambda {|style| joins(:styles).where(:category => {:name => style})}
然后,例如,我跑了 Gallery.by_style( “当代”)
当我只有40个画廊时,我回到了181个画廊,在这个例子中,应该只有一个以“当代”风格返回。
以下是生成的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'
有什么想法吗?提前谢谢。