Предположим, у меня есть следующие модели:
class Shop < ApplicationRecord
has_many :staffs
has_many :items
end
class Staff < ApplicationRecord
belongs_to :shop
end
class Item < ApplicationRecord
belongs_to :shop
end
Теперь для конкретного магазина я хочу получить его количество сотрудников и количество предметов в одном запросе. Возможно ли это?
Я пробовал следующий запрос, но результат умножается друг на друга:
@shop = Shop.joins(:items, :staffs).select('COUNT(items.id) AS items_count', 'COUNT(staffs.id) AS staffs_count').find(params[:id])
# => @shop.items_count = 30, @ship.staffs_count = 30
# Where the correct result should be 5 and 6