我正在读Hartl的Rails教程。我准备第一次练习9.6,他让我测试用户admin属性是否是不可访问的。较早时,书中的理由是:
在清单9.42之后,Hartl的Rails教程说
如果我们忽略了用户模型中的attr_accessible列表(或者愚蠢地将:admin添加到列表中),恶意用户可能发送PUT请求如下:
put /users/17?admin=1
本教程中相应的练习(练习9.6.1)说
添加测试,以验证用户管理属性不可访问
我已经用user_spec.rb中的这段代码完成了测试
expect do
@user.update_attributes(:admin => true)
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)但我用堆栈溢出来做测试。--这是我最初的想法,(在user_pages_spec.rb中):
expect do
put user_path(user) + "?admin=1"
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error) # or some other error,但我没能让它开始工作。
所以我的问题是:
发布于 2013-01-31 05:06:53
我想我会跟你争论你的考试实际上更好。有些人会争辩说,给出的答案是测试Rails功能,这实际上不是您的工作。然而,我确实认为在几个不同的方向测试事物是好的。
在我上学的时候,我的印象是,除了做GET之外,不可能通过URI发送数据。快速搜索堆栈溢出没有得到任何确认。然而,维基百科的文章似乎暗示了这一点:
%28HTTP%2
我认为正确的代码行是
put user_path(user), {user: {admin: 1}, id: user.id}我希望这能帮上忙。
https://stackoverflow.com/questions/14618302
复制相似问题