【发布时间】:2012-04-04 11:22:04
【问题描述】:
Rails 初学者在这里..
我有一个用户资源,我在其中实现了一个回调,该回调应该防止管理员用户删除自己。
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
如果这对某些人来说看起来很熟悉,它来自 Michael Hartl 的 rails 教程,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 请求在这种情况下成功的想法。还有关于如何正确测试这种情况的任何想法?
谢谢。
【问题讨论】:
-
测试测试什么?删除成功后不重定向吗?
-
User和id104 是否真的从数据库中删除? -
@FrederickCheung - 谢谢,我意识到我的错误在那里......删除重定向到 users_path 所以应该是一个不应该......在这种情况下,测试实际上失败了
-
@Aldo'xoen'Giambelluca - 是的,用户 id 104 已从数据库中删除
-
根据@FrederickCheung 的评论编辑的问题..
标签: ruby-on-rails