2011-07-20 24 views
4

我的模型如下,當我把這兩個SQL查詢正在執行一個計數+原裝額外數查詢用Rails 3運行每一個正常的查詢如何解決這個

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 %> 

這怎麼解決。爲什麼兩個查詢得到執行?

+1

什麼是您的看法是什麼樣子? – Dogbert

+0

我已經更新了我的觀點 –

+4

你可以在你的控制器中嘗試'@alternative_drugs = Drug.find_alternatives(params [:gpi])all',看看它是否有幫助嗎? – Dogbert

回答

4

。建議 - 在你的控制器Dogbert

嘗試

@alternative_drugs = Drug.find_alternatives(params[:gpi]).all 
1

我的猜測是,在您看來,您使用@alternative_drugs.count時應該使用@alternative_drugs.size