Вы можете использовать объединения, чтобы объединить все нужные вам таблицы. Я предполагаю, что вы установили все отношения в своих моделях и что ваши модели называются Contact, Contactstatus и ContactList. Тогда вы сможете создать такой запрос:
select c.id, c.name, c.phone, c.created_at, c.updated_at, s.status
from contacts c
JOINS contacts_lists cl ON cl.contact_id = c.id
JOINS contactstatuses s ON s.contact_id = c.id
where cl.list_id = ?
and s.company_id = ?;
Со следующим кодом:
# I filled the id values (questionmarks) with a 1
Contact.select(:id, :name, :phone, :created_at, :updated_at, Contactstatus.arel_table[:status]).joins(:contacts_lists, :contactstatuses).where(contacts_lists: { list_id: 1 }, contactstatuses: { company_id: 1 })