创建或更新记录

问题描述:

我想通过唯一ID检查记录是否已创建。如果是,我想在amount属性中加1。如果不是,我想创建它,并将金额属性设置为1.创建或更新记录

我已经有了这个:#@have = current_user.haves.create_or_update_by_id(params[:have])但我不太确定如何设置金额。

谢谢

使用ActiveRecord的increment方法(Documentation):

@have = current_user.haves.find_or_initialize_by_id(params[:have]) 
@have.increment(:amount) 
@have.save 

它初始化量属性到零,如果零,并增加了由传递的值(默认值为1)。如果不是零,它只是递增属性值。

我可能会分裂成两个操作。

@have = current_user.haves.find_or_initialize_by_id(params[:have]) do |h| 
    h.amount = 0 
end 

@have.amount += 1 
@have.save 

第一statemnt便以其独特ID查找记录或初始化一个新的记录与所提供的ID和金额设置为0的嵌段仅在初始化运行,而不是上找到。然后我们不管原来的状态如何增加数量并将记录保存回数据库。

+0

做结束块只在记录被初始化时执行,但如果找到记录则不执行? – JohnMerlino 2012-07-27 15:11:21