выполнение запроса, отображающего определенные местоположения, которые соответствуют зависимым критериям (ruby)

0

У меня есть locations и у меня есть ticket_locations. В locations много ticket_locations. То, что мне нужно сделать, - это ticket_locations только определенные locations которые владеют определенным типом ticket_locations которые соответствуют определенному типу идентификатора.

Я смог вытащить locations, и мне удалось вытащить ticket_locations.

Мой идентификатор, который мне нужно установить, - это

identify = [2, 3]

Мой поиск родительских местоположений ниже. Это дает мне три места. (да, они принадлежат клиентам)

locations_query = Location.joins(:customers).where('customers.id in (?)', @customers.map(&:id)) 

Мои поиски для ticket_locations приведены ниже. Это дает мне 5 ticket_locations. 2 относятся к первому месту. 2 принадлежат второму месту, и только 1 принадлежит третьему.

ticket_locations = LocationTicket.where(ticket_id: identify)

Мне нужно (и я боюсь) - запустить поиск родительских локаций, которые вытаскивают только те места, где есть ticket_locations которые соответствуют обоим идентификаторам в массиве identify.

Я пробовал что-то вроде

master_ticket_locations = locations_query.where(ticket_id: zip_ticket_locations) 

Но так как ticket_id - это имя класса в ticket_locations а не locations_query меня были проблемы.

1 ответ

0
Лучший ответ

Вы хотите использовать оператор join. Точно так же, как вы делали в ticket_locations для таблицы customers, вам нужно присоединиться к ticket_locations. Предполагая, что это имя отношения:

master_ticket_locations = locations_query.joins(:ticket_locations).where(ticket_locations: {ticket_id: identify})

Дополнительную информацию см. В руководстве Rails.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню