2012-05-03 4 views
0

특정 작업을 수행 할 때 관리자로 제한하려고합니다. 다음에서는 사용자가 아닌 sign_in 사용자는 전달 된 해시의 액션에 액세스해서는 안됩니다. 여기 RSpec에 코드의 조각입니다을 작동하지만 전달이 해시에 대한 질문이 이 : 문자열을 사용하는 이유 여기에 내가 궁금Rails 3.2에서 사용자 동작을 제한하기 위해 컨트롤러 테스트 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

왜 dup 메서드가 필요하지 않고 작동하지 않는 것 같습니까? 그런 다음 – Steve

답변

1

기호에는 .dup 메서드가 없지만 문자열에는 문제가 있습니다. IRB 나 Rails 콘솔에서이 작업을 시도하면 실패한 것으로 나타납니다.

그러나 그게 조치입니다. method이 기호 일 수 있는지 확실하지 않습니다. 당신은 그것을 밖으로 시도 할 수 있습니다.

+0

심볼을 사용할 수 있습니다. 기호와 문자열에는'dup'과'clone '이 있습니다. 나는 루비 1.9.3을 사용한다. 이것은 아직도 내 혼란을 분명히하지, 감사합니다. – juanitofatas

+0

루비 1.9.2에서는 문자열 문제가 있습니다. – juanitofatas

관련 문제