在阅读使用 Rails 进行敏捷 Web 开发一书时,我有一个快速的问题,我在浏览网站时无法找到答案。我有两种方法:
此方法在我的控制器中:
def decrement
@line_item = LineItem.find(params[:id])
@line_item = @line_item.decrement_quantity(@line_item.id)
respond_to do |format|
if @line_item.save
format.html { redirect_to store_url }
format.json { render json: @line_item, status: :created, location: @line_item }
else
format.html { render action: "new" }
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
这是在相应的模型中:
def decrement_quantity(line_item_id)
current_item = LineItem.find_by_id(line_item_id)
if current_item.quantity > 1
current_item.quantity -= 1
else
current_item.destroy
end
current_item
end
我知道这不是最有效的代码,但我的问题是,如果 current_item 在模型方法中被破坏,那么该方法返回的是什么?(无?) current_item 作为变量是否仍然存在,只是数据库对象已被破坏?控制器中的递减方法如何保存已经销毁的对象?(我在控制器方法的 if 语句中放了一个 logger.debut 语句,无论模型方法是否评估 if 或 else 语句,代码似乎总是通过那里)。