私の rails4 プロジェクトでは、クライアント側の検証gem (branch 4-0-beta) を使用しています。
セキュリティ上の理由から、config/initializers/client_side_validations.rb ファイルで一意性の検証を無効にしました。
ClientSideValidations::Config.disabled_validators = [:一意性]
これは正常に機能し、ユーザーの電子メールが存在するかどうかをブラウザーでテストすると、ユーザーが存在するかどうかに関係なく、500 ステータスが返されます。
http://localhost:3000/validators/uniqueness?case_sensitive=false&id=01&user[email]=tester@mail.com&_=1379052030490
(一意性が無効になっていない場合、ユーザーが一意であるかどうかに応じて、200 または 404 ステータス応答が返されます。)
HTTP ステータス コード
ただし、middleware.rb で定義されているステータス コードを正しく理解しているかどうかはわかりません。
client_side_validations / lib / client_side_validations / middleware.rb
def call(env)
if matches = /^\/validators\/(\w+)$/.match(env['PATH_INFO'])
if ClientSideValidations::Config.disabled_validators.include?(matches[1].to_sym)
[500, {'Content-Type' => 'application/json', 'Content-Length' => '0'}, ['']]
else
"::ClientSideValidations::Middleware::#{matches[1].camelize}".constantize.new(env).response
end
else
@app.call(env)
end
end
end
私の理解では、ステータスコード500はサーバーエラーに使用する必要があります(「これ以上具体的なメッセージが適切でない場合に与えられる一般的なエラーメッセージ」)。ただし、この場合、一意性の検証は意図的に無効になっているため、403「禁止」または405「許可されていないメソッド」のどちらがより適切であるかを考えていましたか?
私が 500 ステータスにあまり満足していない理由は、Chrome が自動的にサーバー エラー メッセージを表示することと、client_side_validation gem が例外を発生させないためです。これはレール内でキャッチできます。Chrome のデフォルトのサーバー エラー メッセージが表示されたままです。 500 ステータス コードの場合。
この状況での適切なステータス コードまたは代替ソリューションに関するアドバイスはクールです。