2011-03-13 124 views
0

在Rails中使用平均值的簡單問題。我只是試着計算和平均表格中的部分出價,即適用於單個項目的出價。將平均值縮小到特定值

Bid.average(:amount, :conditions => ['item_id = ?', 'item_id']) 

我不能完全弄清楚爲什麼這將生成以下,以「ITEM_ID」,而不是ITEM_ID的價值,這應該是5。 。

Parameters: {"id"=>"5"} 
Item Load (0.1ms) SELECT "items".* FROM "items" WHERE ("items"."id" = 5) LIMIT 1 
Bid Load (0.5ms) SELECT "bids".* FROM "bids" WHERE ("bids".item_id = 5) ORDER BY created_at DESC 
Rendered bids/_bid.html.erb (6.6ms) 
SQL (0.2ms) SELECT AVG("bids"."amount") AS avg_id FROM "bids" WHERE (item_id = 'item_id') 

謝謝!

回答

1

因爲這是你告訴要做的事情:)你傳遞一個字符串'item_id'作爲條件數組的第二個元素,並將它放到問號的位置。如果您有包含的ID的變量item_id,你不需要把它放入quotemarks:

Bid.average(:amount, :conditions => ['item_id = ?', item_id]) 
0

我覺得應該是這樣的:

Bid.average(:amount, :conditions => ['item_id = ?', item_id]) 

item_id是越來越擺在那裏爲一個字符串,因此引號。確保將item_id設置爲變量之前,例如:

item_id = params[:item_id] #or whatever the params are 
Bid.average(:amount, :conditions => ['item_id = ?', item_id])