gpt4 book ai didi

ruby-on-rails - Rails 中的胖模型瘦 Controller

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:46 25 4
gpt4 key购买 nike

我正在尝试使用以下逻辑重构 Controller 。:

    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 模型,但我不知道这是否是一个好的选择:

def recover_password
result = User.recover_password(params)
render plain: result status: :status
end

重构此代码的最佳替代方案是什么?发送给模型并返回消息?但是如何返回消息和状态码呢?

P.S:我无法在 Controller 中创建另一个方法/操作来分离恢复密码的方法。

最佳答案

不确定将此逻辑添加到用户模型是否是个好主意。您可以将其移至 Controller 私有(private)方法。

def recover_password
result = check_params(params[:login])
render plain: result[:message], status: result[:status]
end

private

def check_params(login)
return { message: "Login not found", status: :unauthorized } if login.blank?
return { message: "Recover by id", status: :ok } if User.exists?(id: login)
return { message: "Recover by email", status: :ok} if Utils.is_email?(login)
{ message: "Email not found", status: :unauthorized }
end

关于ruby-on-rails - Rails 中的胖模型瘦 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com