我无法使用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类的所有书籍
我一定错过了什么?
答案 0 :(得分:2)
问题出在SQL级别。该条件在链接表行上运行,并且任何单独的链接表行都不能同时具有5和8的category_id
。您确实希望单独的链接表行具有这些ID。< / p>
尝试研究Rails'named_scope
,特别是允许使用lambda进行过滤的部分(这样你就可以参数了)。我自己从未尝试过,但如果我必须实现你正在寻找的东西,那就是我所期待的。