2011-03-13 4 views
0

레일스에서 ​​평균값 사용에 관한 간단한 질문. 나는 테이블에있는 입찰가의 하위 집합, 즉 단일 항목에 적용되는 입찰가를 계산하고 평균화하려고합니다. 이 오히려 5.되어야 ITEM_ID의 가치보다, 'ITEM_ID'로, 다음을 생성하는 이유평균값을 특정 값으로 좁히기

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

나는 확실히 알아낼 수 없습니다. .

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 = params[:item_id] #or whatever the params are 
Bid.average(:amount, :conditions => ['item_id = ?', item_id]) 
관련 문제