2011-03-13 84 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])