Запрос дополнительного подсчета выполняется для каждого обычного запроса в Rails 3. Как это исправить - PullRequest
4 голосов
/ 20 июля 2011

Моя модель ниже, когда я вызываю это, два sql запроса выполняют один счет + оригинал

 class Claim < ActiveRecord::Base


    class << self
      def find_alternatives()
         Drug.where("gpi like '3760%'").select('gpi, drugs.prod_desc_abbrev').group(:gpi)
      end
    end
  end

В моей консоли я нахожу два запроса, выполняющих

SELECT COUNT(*) AS count_all, gpi AS gpi FROM `drugs` WHERE (gpi like '3760%') GROUP BY gpi

SELECT gpi, drugs.prod_desc_abbrev FROM `drugs` WHERE (gpi like '3760%') GROUP BY gpi

Мой контроллер

 def drug_alternatives
    @alternative_drugs = Drug.find_alternatives(params[:gpi])
 end

Мои просмотры

 <% @alternative_drugs.each_with_index do |result, count| %>

<%= result.gpi %>
    <%= result.prod_desc_abbrev %>

 <% end %>

Как это можно исправить.Почему выполняются два запроса?

Ответы [ 2 ]

4 голосов
/ 21 июля 2011

Предложено - Dogbert

в вашем контроллере попробуйте

@alternative_drugs = Drug.find_alternatives(params[:gpi]).all 
1 голос
/ 20 июля 2011

Полагаю, по вашему мнению, вы используете @alternative_drugs.count, когда вам следует использовать @alternative_drugs.size.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...