是否可以检测Update_all是否成功?

时间:2011-02-08 17:43:45

标签: ruby-on-rails

Rails 2.3.5

我有一个文件夹模型和一个联系模型。在视图中,我有一个表单来删除带有单选按钮的文件夹,以便在删除文件夹中的所有联系人或将这些联系人移动到另一个文件夹(通过选择)之间进行选择。

在respond_to块中,如果用户选择将联系人移动到新文件夹,我有以下代码:

    Contact.update_all({:folder_id => params[:folder_to_move_contacts_to]},['folder_id = ?', "#{params[:folder_to_delete]}"])
      folder = Folder.find(params[:folder_to_delete])
      folder.destroy
      flash[:notice] = "SUCCESS: Folder deleted and all contacts moved to new folder."
      format.html { redirect_to 'new' }
      format.js

它有效,但我想知道如何处理失败,就像数据库打嗝(如果更新,移动联系人,失败 - 不删除文件夹)。有没有办法在执行销毁之前检测更新是否成功?

实际上(仍然相当新),我也总是想知道为什么在Scaffold中,一个破坏方法似乎只是假设破坏是成功的。

谢谢 - 非常感谢

1 个答案:

答案 0 :(得分:0)

如果db无法执行更新,则活动记录将引发一些ActiveRecordError,因此不会执行销毁。