У меня есть класс для ресторанов и категорий, у которых есть отношения has_and_belong_to_many. Благодаря этой ассоциации я получаю метод restaurant.category_ids, который возвращает массив.Рельсы: запрос на основе метода не в таблице базы данных
Я хочу выбрать рестораны, которые относятся к указанным категориям (может быть более одного). Как создать этот запрос?
До сих пор у меня есть:
@restaurants = Restaurant.joins(:categories).where('categories.id' => params[:category_ids])
Но это возвращает дубликаты, а также рестораны, которые подходят только одна из категорий. .
Например, поиск американских, дешевы и ресторанов быстрого питания дает мне [ «Макдональдс», «Макдональдс», Макдональдс»,„Бургер Кинг“] для @restaurants
Я также попытался:
@restaurants = Restaurant.where(:category_ids => params[:category_ids])
Но category_ids не поле базы данных, и это не работает
Примечание:. PARAMS [: category_ids] представляет собой массив идентификаторов
Спасибо за любую помощь. !
Вы пробовали IN. @restaurants = Restaurant.joins (: categories) .where ('categories.id IN (# {params [: category_ids]})') –
@krishnasahoo Я хочу только рестораны, принадлежащие всем указанным категориям, а не только один из них. – user1411469