Rails组合('AND')搜索关联的连接表

时间:2009-05-26 03:47:38

标签: sql ruby-on-rails join

我无法使用rails来返回对象的关联连接表上的组合('AND')搜索。

E.g。我有类别中的书籍。让我们说:第1册:属于第5类和第8类

但是我不能使用连接表来过滤'结果'?例如: - >

课本 has_and_belongs_to_many:categories,:join_table => “book_categories”

Book.find:all,:conditions => “book_categories.category_id = 5 AND book_categories.category_id = 8”,:include => “类别” ...返回nil (为什么它不归还所有5& 8中的书?)

然而:'或'确实有效:

Book.find:all,:conditions => “book_categories.category_id = 5 OR book_categories.category_id = 8” ...返回第5类和第8类的所有书籍

我一定错过了什么?

1 个答案:

答案 0 :(得分:2)

问题出在SQL级别。该条件在链接表行上运行,并且任何单独的链接表行都不能同时具有5和8的category_id。您确实希望单独的链接表行具有这些ID。< / p>

尝试研究Rails'named_scope,特别是允许使用lambda进行过滤的部分(这样你就可以参数了)。我自己从未尝试过,但如果我必须实现你正在寻找的东西,那就是我所期待的。