AR삽질러

Rails 一日一つメソッド (Day28) status 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day28) status

아랑팡팡 2024. 2. 5. 17:04
728x90

 

Rails 一日一つメソッド (Day28) status

 

1. Railsでステータスコード

 - HTTP Status Codeは Serverが clientに requestを知らせる標準方法で、各Status Codeは requestは成功したか、エラーが発生したかなどを表す。

 

2. 会員登録の例題で renderメソッドと一緒に使った status: :unprocessable_entity

 - requestされた作業を完了できない場合 clientに知らせる。

 - Form提出で有効しないDataが入力された時、Userにエラー メッセージを表示し、同じフォームを再レンダリングするために使用する。

 

会員登録失敗処理

def create
	@user = User.new(user_param)
    if @user.save
    	redirect_to root_path, notice: "ユーザーが登録が完了しました。"
    else
    	flash.now[:alert] = "会員登録に失敗しました。。"
        render 'new', status: :unprocessable_entity
end

 - 新しい @userオブジェクトを生成し保存する。

 - @user.saveが成功した時、Userを root_pathに redirectionし成功メッセージを表紙する。

 - 保存に失敗したら newに再renderingし status code 422をresponseし、エラーメッセージを表紙する。

ここで status: :unprocessable_entityは clientに requestが失敗したのを知らせる事ができる。

 


成功的に request (200 OK)

def show
	@user = User.find(params[:id])
    render json: @user
end

 

Resource 生成成功 (201 Created)

def create
	@user = User.new(user_params)
    if @user.save
    	render json: @user, status: :created, location: @user
    else
    	render json: @user.errors, status: :unprocessable_entity
    end
end

 

Resource Not Found (404 Not Found)

def show
	@user = User.find_by(id: params[:id])
    if @user
    	render json: @user
    else
    	render json: { error: "User not found" }, status: :not_found
    end
end

 

権限がない (401 Unauthorized)

def update
	return render json: { error: "Not Authorized" }, status: :unauthorized unless current_user.admin?
end

 


HTTP Status Code
情報応答(100-199)
成功的な回答(200-299)
リダイレクトメッセージ(300-399)
クライアントエラー応答(400-499)
サーバーエラー応答(500-599)

 

728x90
반응형
LIST