Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 基于轨道条件的返回装置误差_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails 基于轨道条件的返回装置误差

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

当我将会话发布到rails/Desive时,要么得到用户数据的响应,要么得到一条平淡的错误消息。如何根据创建会话时出现的问题发回自定义消息

当前代码:

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