Rails 3 has_many通过范围,连接返回意外结果

时间:2011-03-19 18:59:01

标签: ruby-on-rails-3 scope has-many-through

我正在尝试创建范围以按特定类别类型查找所有图库,例如“样式”。最终,它们将被链接以按多种类别类型进行过滤,但我无法让第一种类型过滤。

以下是模型:

画廊:

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'

有什么想法吗?提前谢谢。

0 个答案:

没有答案