Я пытаюсь провести рефакторинг контроллера со следующей логикой.:
def recover_password
if params[:login].present?
if User.exists?(id: params[:login])
render plain: "Recover by id" status: :ok
elsif Utils.is_email?(params[:login])
render plain: "Recover by email" status: :ok
else
render plain: "Email not found" status: :unauthorized
end
else
render plain: "Login not found" status: :unauthorized
end
end
Я пытался отправить бизнес-логику в User Moel, но я не знаю, является ли это хорошей альтернативой:
def recover_password
result = User.recover_password(params)
render plain: result status: :status
end
Какова лучшая альтернатива для рефакторинга этого кода?Отправить в модель и вернуть сообщения?Но как вернуть сообщение и код состояния?
PS: я не могу создать другой метод / действие в контроллере, чтобы отделить способы восстановления пароля.