Additional counters are requested for every regular request in Rails 3. How to fix this

My model is below, when I call this two sql queries, one counter + original is executed

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 

In my console, I find two queries executing

 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 

My controller

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

My views

  <% @alternative_drugs.each_with_index do |result, count| %> <%= result.gpi %> <%= result.prod_desc_abbrev %> <% end %> 

How can this be fixed. Why are two queries performed?

+4
source share
2 answers

Offered - Dogbert

in your controller try

 @alternative_drugs = Drug.find_alternatives(params[:gpi]).all 
+4
source

My guess is you use @alternative_drugs.count when you should use @alternative_drugs.size .

+1
source

All Articles