2011-03-29 54 views
0

中的一列我有一個問題,我似乎無法擺脫,即時只是試圖將支票應用於我的購物車,如果股票列中的值較少然後1,然後不要添加項目,而是打印一個味精,說缺貨。我COAD低於Ruby on Rails,將檢查應用於表

def create 
    prod_id = params[:line_item][:product_id] 
    curnt_itm = @line_items.find(:first, :conditions => "product_id = #{prod_id}") 
    if (curnt_itm.stock > 0) 
    @line_item = @cart.add_product(params[:line_item][:product_id], params[:line_item][:quantity]) 
    respond_to do |format| 
    if @line_item.save 
     format.html { redirect_to(@line_item.cart, :notice => '') } 
     format.xml { render :xml => @line_item, :status => :created, :location => @line_item } 
    else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @line_item.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

這將創建一個新的項目,但每次我嘗試在該行執行此它提供了一個錯誤味精說的論據2錯誤號碼1.它

curnt_itm = @line_items.find(:first, :conditions => "product_id = #{prod_id}") 

誰能幫助我理清問題,感謝您的幫助......

回答

0

您應該使用類方法,而不是實例。例如:

LineItem.where("product_id = ?", prod_id).first 

你能提供有關@line_items一些信息?

可能是它應該是這樣的:

curnt_itm = @line_items.class.find(:first, :conditions => ["product_id = ?", prod_id]) 

curnt_itm = @line_items.class.where("product_id = ?", prod_id).first 
+2

它是不好的做法使用' 「的product_id =#{PROD_ID}」' - 你可以成爲SQL的犧牲品注入攻擊你的應用程序。 – 2011-03-29 12:14:40