Rails комбинированный ('И') поиск по связанным таблицам соединения - PullRequest
1 голос
/ 26 мая 2009

Я не могу получить рельсы для возврата комбинированных ('И') поисков по связанным таблицам соединения объекта.

например. У меня есть книги, которые находятся в категориях. Скажем так: Книга 1: в категории 5 и 8

Но я не могу получить 'И' для фильтрации результатов с помощью таблицы соединений? E.g :: ->

Книги класса has_and_belongs_to_many: категории,: join_table => "book_categories"

Book.find: все,: условия => "book_categories.category_id = 5 И book_categories.category_id = 8",: include => "категории" ... возвращает ноль (почему он не возвращает все книги в 5 и 8 ??)

Однако: «ИЛИ» работает:

Book.find: все,: условия => "book_categories.category_id = 5 ИЛИ book_categories.category_id = 8" ... возвращает все книги в категориях 5 и 8

Должно быть, я что-то упустил?

1 Ответ

2 голосов
/ 26 мая 2009

Проблема на уровне SQL. Это условие выполняется для строки таблицы ссылок, и любая отдельная строка таблицы ссылок никогда не может иметь category_id как 5, так и 8. Вы действительно хотите, чтобы отдельные строки таблицы ссылок имели эти идентификаторы.

Попробуйте заглянуть в Rails 'named_scope, в частности ту часть, которая позволяет фильтровать с помощью лямбды (так что вы можете принять аргумент). Я никогда не пробовал сам, но если бы мне пришлось реализовать то, что вы ищете, это то, к чему я бы обратил внимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...