我正在使用Ruby 1.8.7和Rails 2.3.5开发一个webapp,它将管理一些工业流程。其中一个要求是,当有人想删除注册表时,删除任务必须更新数据库表的其中一个字段。此字段确定记录是否有效。
我修改了脚手架生成的默认删除方法:
def activar
@alarma = Alarma.find(params[:id])
respond_to do |format|
if @alarma.update_attribute(:estado_id => 1)
flash[:notice] = 'La alarma ha sido activada.'
format.html { redirect_to(@alarma) }
format.xml { head :ok }
else
format.html { render :action => "index" }
format.xml { render :xml => @alarmas }
end
end
end
def desactivar
@alarma = Alarma.find(params[:id])
respond_to do |format|
if @alarma.update_attribute(:estado_id => 2)
flash[:notice] = 'La alarma fue desactivada.'
format.html { redirect_to(@alarma) }
format.xml { head :ok }
else
format.html { render :action => "index" }
format.xml { render :xml => @alarmas }
end
end
end
其中:estado_id => 1
处于有效状态,:estado_id => 2
处于无效状态。但是,当我尝试进行更新时,它不会更改属性。实际上,它没有做任何事情。
有没有人有线索?
答案 0 :(得分:0)
您应该在案件中使用update_attributes
update_attributes(attributes)public
更新来自的所有属性 传入哈希并保存记录。 如果对象无效,则保存 将失败,并将返回错误。
示例:
@user.update_attributes(:status => 'active')
如果您想使用update_attribute ,请或@alarma.update_attribute(:estado_id, 2)
update_attribute(name,value)public
更新单个属性并保存 记录没有通过 正常的验证程序。