0

特定のアクションを実行する際に、ユーザーを管理者に制限しようとしています。以下では、ユーザーがサインインするとき (管理者ではない)、渡されたハッシュからのアクションにアクセスするべきではありません。これが機能する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:createaction.dupsend

ありがとう!

4

1 に答える 1

1

問題は、Symbol には.dupメソッドがなく、String にはメソッドがあることです。IRB または Rails コンソールでこれを試してみると、失敗することがわかります。

ただし、それはアクションのためです。methodがシンボルであるかどうかはわかりません。あなたはそれを試すことができます。

于 2012-05-04T18:44:29.940 に答える