Вопрос Activerecord .. Как оптимизировать этот запрос ..
Prefectures (have many) Cities (have many) Shops (have many) Sales (have many) Brands
Я хотел бы получить список из одной продажи на префектуру, которая еще не завершена .., а затем перечислить доступные брендына распродаже.
Вложение делает для меня такую хитрость!
Вот то, что я придумал, хотя это довольно уродливо, и я думаю, что его можно оптимизировать на уровне запросов.вместо того, чтобы получать все незаконченные продажи ..
#Get all sales which are yet to finish, ordered by finish date
upcoming_sales = Sale.includes([{:shop => {:city => :prefecture}}, :brands])
.where("finish > ?", Date.today)
.order('start ASC, finish ASC')
.select(['shop.city.prefecture.name', 'brands.name'])
#filter down to a single sale per prefecture
@sales = upcoming_sales.each_with_object({}){ |s,o|
o[s.shop.city.prefecture.name] = o[s.shop.city.prefecture.name] ||= s
}