(Привет, доктор Ник!)
Я пытаюсь все уладить для администратора нашего приложения, и в некоторых местах у нас есть довольно скупой код.
Например,у нас есть рынки, которые содержат предложения.В некоторых местах мы делаем что-то вроде этого:
@markets = Market.find(:all, :select => ['name, id'])
@deals = Deal.find(:all, :select => ['subject, discount_price, start_time, end_time'], :conditions => ['start_time >= ? AND end_time <= ?', date1 date2])
Затем в соответствующем представлении мы делаем что-то вроде этого:
@markets.each do |m|
=m.name
end
@deals.sort!{ |a,b| a.market.name <=> b.market.name }
@deals.each do |d|
=d.subject
=d.market.name
end
Это выполняет глупое количество запросов: от одного дополучить имена и идентификаторы рынка, затем другой, чтобы получить всю информацию о сделке, а затем для каждой сделки (из которых тысячи) мы запускаем еще один запрос , чтобы получить название рынка, которое у нас уже есть!
Скажите, что есть способ получить все, что мне нужно, всего одним запросом, так как он все равно связан, или, по крайней мере, убрать это, чтобы не было таким кошмаром.