Ruby on rails 基于轨道条件的返回装置误差
当我将会话发布到rails/Desive时,要么得到用户数据的响应,要么得到一条平淡的错误消息。如何根据创建会话时出现的问题发回自定义消息 当前代码:Ruby on rails 基于轨道条件的返回装置误差,ruby-on-rails,devise,Ruby On Rails,Devise,当我将会话发布到rails/Desive时,要么得到用户数据的响应,要么得到一条平淡的错误消息。如何根据创建会话时出现的问题发回自定义消息 当前代码: class V1::SessionsController < ApiBaseController skip_before_action :verify_authenticity_token def create email = params[:user] && params[:user][:ema
class V1::SessionsController < ApiBaseController
skip_before_action :verify_authenticity_token
def create
email = params[:user] && params[:user][:email]
username = params[:user] && params[:user][:username]
@user = User.where(email: email).first if email
@user = User.where(username: username).first if username
if @user&.valid_password?(params[:user] && params[:user][:password])
@user.update_user_login_timestamp
respond_to do |format|
format.json { render '/users/show', status: :ok }
end
else
render json: {success: false, message: "no good"}, status: 500
end
end
private
def user_params
params.require(:user).permit(:email, :password, :username)
end
end
您可以将创建操作编写为:
def create
email = params[:user] && params[:user][:email]
username = params[:user] && params[:user][:username]
@user = User.where(email: email).first if email
@user = User.where(username: username).first if username
respond_to do |format|
if @user.blank?
format.json { render json: {error: "doesnt exist"}, status: 404 }
elsif @user.valid_password?(params[:user] && params[:user][:password])
@user.update_user_login_timestamp
format.json { render '/users/show', status: :ok }
else
format.json { render json: {error: "bad password"}, status: 422 }
end
end
end
用户名找到了但密码没有找到?这是一种实际的设计方法吗?不,不是。是否找到用户名但密码与实际方法不匹配?如果@user.blank?如果用户名为DNE,则为零,对吗?
def create
email = params[:user] && params[:user][:email]
username = params[:user] && params[:user][:username]
@user = User.where(email: email).first if email
@user = User.where(username: username).first if username
respond_to do |format|
if @user.blank?
format.json { render json: {error: "doesnt exist"}, status: 404 }
elsif @user.valid_password?(params[:user] && params[:user][:password])
@user.update_user_login_timestamp
format.json { render '/users/show', status: :ok }
else
format.json { render json: {error: "bad password"}, status: 422 }
end
end
end