やりたいこと
- 認証チェック
NGなら401 (unauthorized) を返す。 - 認可チェック
NGなら403 (forbidden) を返す。 - パラメータチェック
NGなら400 (bad request) を返す - 正常終了なら200 (ok) を返す
ステータスコードの指定方法
renderメソッドのオプションにstatusという項目があり、ここにステータスコードを指定することで実現できる。
render status: 400
実装したコード
基本的には、各チェックに該当した場合にrender status: {code}
をすればよいのだが、Ruby on Railsで1アクション内に複数render
があるといけないので、and return
を追加してあげる必要がある。
なお、statusの指定は数値だけでなく、それに対応するシンボルでもよしとされている。render status: :unauthorized
など。
以下の記事に詳細は記されている。
class XxxController < ApplicationController
def index
unless isAuthenticationOk?
#認証チェック
render status: 401 and return
end
unless isAuthoraizationOk?
#認可チェック
render status: 403 and return
end
unless isParamOk?(params)
#パラメータチェック
render status: 400 and return
end
#正常終了
render status: 200
end
end
コメント