gpt4 book ai didi

ruby-on-rails - 带有 current_user 的 Rails 服务对象

转载 作者:行者123 更新时间:2023-12-05 02:21:04 24 4
gpt4 key购买 nike

我正在使用 devise 并创建了一个服务对象 - 一切都按预期完美运行。但是我想知道如何包含 current_user?因为我必须始终传入 current_user 或 user_signed_in?当我在不同的类和 View 中使用相同的方法时,这些变量很烦人,我该如何去做?

目前我有这个用于测试:

class User
class GetStart
attr_reader :current_user

def initialize(user)
@current_user = user
p current_user
end
end
end

最佳答案

current_user 通常是 ApplicationController 的辅助方法,这意味着它只能在您的 Controller 和 View 中访问。这是一件好事——您的服务对象没有直接访问 current_user 的业务,因为 current_user 是根据请求/ session 中传递的信息创建的,这是 Controller 所关心的。

在我看来,您的方法是正确的,最好将您的用户对象作为外部对象(即依赖注入(inject))传递,而不是直接将其耦合到单独对象中的方法。毕竟,您的服务对象是否需要知道或关心 user 是否来自 session ?

此外,如前所述,请记住 attr_reader 为该类创建了一个实例变量,因此您应该有 @current_user = user

关于ruby-on-rails - 带有 current_user 的 Rails 服务对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36352521/

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