У меня есть две таблицы: Адвокат и Телефон. Телефон разделен на код города и номер. У адвоката много телефонов. Я хочу создать запрос, который ищет юристов, у которых есть телефон, соответствующий телефону, из списка телефонов.
Если бы у меня был только один телефон, я мог бы найти его так:
Lawyer.join(:phones).where(:area_code => area_code, :number => number)
Проблема в том, что у меня есть список с более чем одним региональным кодом. Поэтому я действительно хочу сделать что-то вроде этого:
lawyers = []
phones.each { |phone| lawyers += Lawyer.join(:phones).where(:area_code => phone[:area_code], :number => phone[:number]) }
Однако я не хочу делать много запросов. Не может ли это быть сделано в одном запросе запроса?
Изменить: так я бы сделал аналогичную вещь, используя только SQL (при условии, что список чисел был [{: area_code = > '555',: number = > '1234564'}, {: area_code = > '533 ',: number = > ' 12345678 '}])
select * from phones where (area_code, number) in (('555', '1234564'), ('533', '12345678'))
Если кто-то может получить это переведенное в ActiveRecord, это будет здорово.