我将返回一个错误或用户的方法,依赖于用户的状态,这样重写多个直列返回
def authenticate
user = User.find_by(email: params[:mail].downcase)
return render json: Errors::EMAIL_NOT_EXISTS, status: 404 if user.nil?
return render json: Errors::WRONG_EMAIL_PASSWORD_COMBINATION, status: 403 unless user.valid_password?(params[:password])
return render json: Errors::EMAIL_NOT_VERIFIED, status: 202 if 'active' != user.activation_state
render json: user, only: %w(access_token first_name last_name), status: 201
end
我失去的睡眠,因为我认为这是太丑陋了,和应该有更好的方式来处理与多个返回的可能性,但我看不到一个。
如何使这更好的可读性,而不使用多个返回或多个ifs
的首要条件,思考,总是支持是假的,因为find_by提高时发现,但记录 –
你也可以使用一个例外[加载ActiveModel串行器(HTTPS:/ /github.com/rails-api/active_model_serializers)来指定将哪个'user'字段渲染为JSON,这样就不必在控制器中指定它们。 –
如果找不到记录,'find_by'不会引发异常。它将是零。所以,如果我使用'find_by!',所有好@МалъСкрылевъ – ksarunas