私の rspec テストでは、次のハッシュの配列を定義し、POST を実行しました。
body = {:event => { :invitations_attributes =>
[ {:recipient_id => 40}, {:email => 'a@a.com'}, {:facebook_id => 123456789} ] } }
post "#{@url}.json", body.reverse_merge(:auth_token => @token)
上記に基づいて、Rails サーバーは "invitations_attributes" をハッシュの配列として受け取ると予想しました。ただし、developer.log ファイルには次の内容があります。
Parameters: {"auth_token"=>"RSySKfN2L8b5QPqnfGf7", "event"=>{"invitations_attributes"=>
[{"recipient_id"=>"40", "email"=>"a@a.com", "facebook_id"=>"123456789"}]}}
(上記のパラメーターでは、「invitation_attributes」配列にはハッシュが 1 つだけ含まれています。)
次の curl ステートメント:
curl -X POST -H "Content-type: application/json" http://localhost:3000/api/v1/events.json -d '{"auth_token":"RSySKfN2L8b5QPqnfGf7","event":{"invitation_attributes":[{"recipient_id":40},{"email":"a@a.com"},{"facebook_id":123456789}]}}'
以下のログ ファイル エントリからも明らかなように、Rails はハッシュの配列をそのまま受け取ります。
Parameters: {"auth_token"=>"RSySKfN2L8b5QPqnfGf7", "event"=>{"invitation_attributes"=>
[{"recipient_id"=>40}, {"email"=>"a@a.com"}, {"facebook_id"=>123456789}]}}
Rack/test は、PUT 操作と POST 操作でこの動作を示しています。
配列を定義どおりに正確に送信するのではなく、ラック/テストが 3 つのハッシュを 1 つに結合するのはなぜですか? ラックが期待どおりの動作を示す設定はありますか?