Обновите вместо удаления - PullRequest
0 голосов
/ 09 июня 2011

Я разрабатываю веб-приложение на Ruby 1.8.7 и Rails 2.3.5, которое будет управлять каким-то промышленным процессом.Одним из требований является то, что, когда кто-то хочет удалить реестр, задача удаления должна будет обновить одно из полей таблицы БД.Это поле определяет, активна ли запись.

Я изменил метод удаления по умолчанию, сгенерированный скаффолдом:

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 голосов
/ 10 июня 2011

Вы должны использовать update_attributes в вашем случае

update_attributes (attribute) public

Обновляет все атрибуты из переданного хэша и сохраняет запись,Если объект недействителен, сохранение завершится неудачно и будет возвращено значение false.

пример:

@user.update_attributes(:status => 'active')

или @alarma.update_attribute(:estado_id, 2), если вы хотите использовать update_attribute

update_attribute (name, value) public

Обновляет отдельный атрибут и сохраняет запись, не проходя обычную процедуру проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...