2015-05-26 3 views
0

Когда моя страница загрузки, это отобразить данные Highcharts (как [1,2,5,10,40])Mongoid получить несколько данных только одного запроса

контроллер

@server = Server.find(params[:id]) 
@statuses = @server.statuses.where(:created_at => 1.days.ago..Time.now) 
@statuses.each do |status| 
    if status.players.nil? 
     @chartData << 0 
    else 
     @chartData << status.players 
    end 
end 

вид

... ,"data": <%=chartData.to_a%> ...

Но в этом коде я достиг проблемы с производительностью.

  • получить первые данные
  • получить вторые данные
  • получить третьи данные
  • получить четвертый данные
  • ...

Каждая страница загрузки, это получить все @statuses с несколькими запросами. (не один запрос), и страница замедляется.

Могу ли я получить все данные, используя только один запрос типа MySQL (SELECT * FROM sometable)?

добавил

К сожалению, я смущен код.

ответ

0

Попробуйте этот код

@statuses = Server.includes(:statuses).where(:created_at => 1.days.ago..Time.now) 
@statuses.each do |status| 
    if status.players.nil? 
    @chartData << 0 
    else 
    @chartData << status.players 
    end 
end