RSpec测试控制器以限制Rails 3.2上的用户行为

时间:2012-05-03 21:27:54

标签: rspec rspec2 rspec-rails

我正在尝试限制用户成为执行特定操作的管理员。在下面,当用户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相关?

谢谢!

1 个答案:

答案 0 :(得分:1)

问题是符号没有.dup方法,但字符串有。尝试在IRB或Rails控制台中执行此操作,您将看到它失败。

然而,那就是行动。我不确定method是否可能是一个符号。你可以尝试一下。