将平均值缩小到特定值
问题描述:
在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')
谢谢!
答
因为这是你告诉要做的事情:)你传递一个字符串'item_id'
作为条件数组的第二个元素,并将它放到问号的位置。如果您有包含的ID的变量item_id
,你不需要把它放入quotemarks:
Bid.average(:amount, :conditions => ['item_id = ?', item_id])
答
我觉得应该是这样的:
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])