我有locations
我有ticket_locations
。 locations
有很多ticket_locations
。我需要做的是仅提取具有与特定类型ID匹配的特定类型locations
的特定ticket_locations
。
我已经能够提取locations
,而且我已经能够提取ticket_locations
。
我需要设置的ID是
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
数组中的两个ID匹配的位置。
我尝试了一些类似
的内容master_ticket_locations = locations_query.where(ticket_id: zip_ticket_locations)
但由于ticket_id
是ticket_locations
中的班级名称而不是locations_query
我遇到了麻烦。
答案 0 :(得分:0)
您想使用join
运算符。就像您在customers
表的locations_query中所做的那样,您需要加入ticket_locations
。假设这是关系的名称:
master_ticket_locations = locations_query.joins(:ticket_locations).where(ticket_locations: {ticket_id: identify})
有关详细信息,请参阅Rails Guide