scope :with_size_ids, lambda { |size_ids|
sizes = Catalog::Size.find(size_ids)
sizes.map do |size|
where('product.size >= ? AND product.size <= ? ', size.max_from, size.max_to)
end
}
Есть база размеров, которая задает диапазон чисел (от и до). На входе скоуп получает массив id этих размеров. На выходе должна быть выборка подходящих под эти размеры записей.
По итогу запрос должен быть аналогичен такому:
where('product.size >= ? AND product.size <= ? ', 0, 100).where('product.size >= ? AND product.size <= ? ', 200, 300) # И так далее