У меня есть 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
меня были проблемы.
Вы хотите использовать оператор join
. Точно так же, как вы делали в ticket_locations
для таблицы customers
, вам нужно присоединиться к ticket_locations
. Предполагая, что это имя отношения:
master_ticket_locations = locations_query.joins(:ticket_locations).where(ticket_locations: {ticket_id: identify})
Дополнительную информацию см. В руководстве Rails.