Ruby on Rails, применить проверку к столбцу в таблице - PullRequest
0 голосов
/ 29 марта 2011

У меня есть проблема, из которой я не могу выйти, я просто пытаюсь применить чек к моей корзине покупок, что если значение в столбце запаса меньше 1, то не добавляйте товар в вместо этого напечатайте сообщение о том, что нет в наличии. мой coad ниже

 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}")

Может кто-нибудь помочь мне разобраться в проблеме, спасибо за любую помощь ...

1 Ответ

0 голосов
/ 29 марта 2011

Вы должны использовать методы класса вместо экземпляра.Например:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...