如何更新ActiveRecord_Relation

时间:2014-11-10 15:26:21

标签: ruby-on-rails-4

我想使用where方法更新数据库记录。 我这样做:

def AjoutAuPanier
  @book = Book.find(params[:id])
  if @book.nbr_exemplaires > 0
    @p = Panier.where(user_id: current_user, book_id: @book.id)
    if  @p.empty? == false
      @p.update(@p.id, quantity:  @p.quantity + 1)
    else
      @p = Panier.new(user_id: current_user.id , book_id: @book.id , price: @book.price, quantity: 1)
    end
    if @p.save
      @book.update(nbr_exemplaires: @book.nbr_exemplaires-1)
      redirect_to detail_path
    else
      redirect_to books_list_path
    end
  else
    flash[:notice]='Ce livre n\'est plus disponible'
    redirect_to books_list_path
  end
end

然而,这会产生以下错误:

  

的未定义方法`id'

1 个答案:

答案 0 :(得分:0)

@p=Panier.where(user_id: current_user, book_id: @book.id)

您必须添加.first,因为.where始终返回数组

@p=Panier.where(user_id: current_user, book_id: @book.id).first