Rails初學者在這裏..如何防止DELETE HTTP請求在這種情況下成功?
我有一個用戶資源,我實現了一個應該阻止管理員用戶刪除自己的回調。
before_filter :admin_no_delete, only: :destroy
def admin_no_delete
admin_id = current_user.id if current_user.admin?
redirect_to root_path if params[:id] == admin_id
end
如果這看起來很熟悉了一些,從邁克爾·哈特爾的軌道教程,exercise #10 here的,但我試圖以不同的方式去做,而不是他建議。
我的(跛腳)測試失敗
describe "deleting herself should not be permitted" do
before do
delete user_path(admin)
end
it { should_not redirect_to(users_path) }
end
但暴露出刪除鏈接管理員用戶只是爲了測試,並點擊該鏈接,好像回調在執行實際成功(重定向到root_path )。
我能夠使用jQuery刪除記錄調用銷燬行動由回調(使用Web Inspector的JavaScript控制檯)的保護:
$.ajax({url: 'http://localhost:3000/users/104', type: 'DELETE', success: function(result){alert(result)} })
如何防止一個DELETE HTTP請求尋找思路在這種情況下成功......還有關於如何正確測試這種情況的想法?
謝謝。
測試是否測試什麼?你不成功刪除後重定向嗎? – 2012-04-04 11:33:09
實際上是否從數據庫中刪除了具有'id' 104的'User'? – 2012-04-04 11:33:12
@FrederickCheung - 謝謝,我意識到我的錯誤在那裏...刪除重定向到users_path,所以應該是一個should_not ..在這種情況下,測試實際上失敗 – rme 2012-04-04 12:15:19