アソシエーションを介して新しいモデルを作成するcreateメソッドがあり、POSTリクエストにパラメータがなかった場合、テキストを含む400レスポンスを返すと予想していました。ただし、エラーが発生します。 。
これはRails 4.0.2
コントローラーメソッド:
def create
@cast_profile = current_user.build_cast_profile(cast_profile_params)
if @cast_profile.save
redirect_to cast_profile_path
else
render :edit
end
end
def cast_profile_params
params.require(:cast_profile).permit(:name, :email, :public)
end
Paramsを渡しても問題ないのに、悪いリクエストシナリオをテストしようとしています。エラーは次のとおりです。
ActionController::ParameterMissing: param not found: cast_profile
私はそれを明示的に救うことができましたが、強力なパラメーターがそれを自動的に行うことになっていると思いました。
動作は次のとおりです。
許可されていないキーの処理
デフォルトでは、明示的に許可されていないパラメーターキーは、開発およびテスト環境に記録されます。他の環境では、これらのパラメーターは単にフィルターで除外され、無視されます。
さらに、この動作は、環境ファイルのconfig.action_controller.action_on_unpermitted_parametersプロパティを変更することで変更できます。 :logに設定すると、許可されていない属性がログに記録され、:raiseに設定すると、例外が発生します。
( ソース )
この例外から400ステータス(Bad Request)で救済することをお勧めします。
rescue_from ActionController::ParameterMissing do
render :nothing => true, :status => :bad_request
end