创建或更新记录
问题描述:
我想通过唯一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的嵌段仅在初始化运行,而不是上找到。然后我们不管原来的状态如何增加数量并将记录保存回数据库。
做结束块只在记录被初始化时执行,但如果找到记录则不执行? – JohnMerlino 2012-07-27 15:11:21