Rails beginners here ..この状況でDELETE HTTP要求が成功するのを防ぐにはどうすればよいですか?
adminユーザーが自分自身を削除できないようにするコールバックを実装したユーザーリソースがあります。
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にリダイレクト
を失敗し )。
私は(ウェブインスペクターのJavaScriptコンソールを使用して)コールバックにより保護されているレコードを削除するにjQueryを使用して破壊するアクションを呼び出すことができました:
からDELETE HTTP要求を防ぐ方法についてのアイデアを探してい$.ajax({url: 'http://localhost:3000/users/104', type: 'DELETE', success: function(result){alert(result)} })
このような状況で成功するためにどのように適切にテストするためのアイデアも?
ありがとうございました。
テストテストは何ですか?削除が成功した後にリダイレクトしませんか? –
'id' 104を持つ' User'は実際にデータベースから削除されていますか? –
@FrederickCheung - ありがとう、私は自分の間違いを認識した... users_pathへのリダイレクトを削除する必要があったので、should_not ..その場合、テストは実際に失敗する – rme