У меня есть существующий запрос, который возвращает более 100 000 записей.
dev_results = records.joins("INNER JOIN devices ON (devices.id = snapshots.type_id)")
.joins("INNER JOIN assets ON (devices.asset_id = assets.id)")
.joins("LEFT JOIN systems ON (assets.system_id = systems.id)")
.pluck("devices.hostname, devices.ipaddress, systems.fismaid, assets.is_expired")
Модель устройства имеет область действия:
scope :dhcp, -> {
joins("INNER JOIN dhcp_cidrs ON (devices.ipaddress <<= dhcp_cidrs.cidr)").where("devices.id NOT IN (?)", Device.reserved.select("devices.id"))
}
Как использоватьDevice.dhcp как подзапрос для вычисления нового столбца с именем «is_dhcp» = true, если devices.id находится в dhcp_ids (в противном случае is_dhcp = false)