更新而不是删除

时间:2011-06-09 19:54:13

标签: ruby-on-rails ruby postgresql

我正在使用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处于无效状态。但是,当我尝试进行更新时,它不会更改属性。实际上,它没有做任何事情。

有没有人有线索?

1 个答案:

答案 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

     

更新单个属性并保存   记录没有通过   正常的验证程序。