我正在尝试限制用户成为执行特定操作的管理员。在下面,当用户sign_in(不是管理员)时,它不应该从传入的哈希中访问操作。以下是工作的RSpec代码,但对传入的哈希值有疑问:
{ "new" => "get",
"create" => "post",
"edit" => "get",
"update" => "put",
"destroy" => "delete" }.each do |action, method|
it "cannot access the #{action} action" do
sign_in(:user, user)
send(method, action.dup, :id => project.id)
response.should redirect_to(root_path)
flash[:alert].should eql("You must be an admin to do that.")
end
end
我想知道为什么在这里使用字符串"new"
,"create"
,...而不是使用像:new
,:create
之类的符号?它是否与稍后action.dup
方法调用中的send
相关?
谢谢!
答案 0 :(得分:1)
问题是符号没有.dup
方法,但字符串有。尝试在IRB或Rails控制台中执行此操作,您将看到它失败。
然而,那就是行动。我不确定method
是否可能是一个符号。你可以尝试一下。