在铁轨上很常见
objects_controller
管制员要休息
edit
和
destroy
这样的行为:
def edit
@object = Object.find(params[:id])
end
def destroy
@object = Object.find(params[:id])
@object.destroy
redirect_to :back
end
使用提供编辑和销毁链接的关联视图,如下所示:
<%= link_to "Edit the Object", edit_object_path(object) %>
<%= link_to "Delete", object, :confirm => 'Are you sure?', :method => :delete %>
很容易把它炸掉。如果我打开两个浏览器窗口A和B,在浏览器A中用“删除”链接销毁一个对象,然后在浏览器B中按“编辑”链接,
find()
在
编辑
操作引发异常。
更新以添加jakub的建议
有几种方法可以解决这个问题:
-
捕获异常并在
编辑
行动
-
使用
@object = find(:first, "conditions... etc.
并测试
@object
在
编辑
行动
-
使用通用404
但鉴于这是一种常见的模式,我很想知道其他人是如何处理这种情况的。