gpt4 book ai didi

ruby-on-rails - 为什么 current_user 也可以通过 @current_user 使用 Devise 获得?

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:59 25 4
gpt4 key购买 nike

Devise自述文件没有提及任何关于 @current_userI don't see any reference to it in Devise's source code 的内容- 也不在我的应用程序的源代码中 (grep -R "@current_user"app/) - 但我可以在我的 Controller 中使用 @current_user。这是为什么?

最佳答案

当您创建一个 Devise 模型时,比如说 User,然后 Devise 会动态地为您生成一个辅助方法,命名为 current_user。此方法返回实例变量 @current_user 的值。通过使用 @current_user,您只是直接访问实例变量,而不是通过 current_user 方法。所以,您明白为什么值是相同的。

在Devise中,current_#{mapping}辅助方法的实现如下:

      def current_#{mapping}
@current_#{mapping} ||= warden.authenticate(scope: :#{mapping})
end

mapping 将替换为您的 Devise 模型名称,在您的情况下为 user

引用 current_#{mapping} method definition 在设计源代码中。

关于ruby-on-rails - 为什么 current_user 也可以通过 @current_user 使用 Devise 获得?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23090538/

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