加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 创建一个像Devise的current_user这样的方法,以

发布时间:2020-12-17 01:47:32 所属栏目:百科 来源:网络整理
导读:我允许我的用户拥有多个配置文件(用户有很多配置文件),其中一个是默认配置文件.在我的users表中,我有一个default_profile_id. 我如何创建一个“default_profile”,比如我可以在任何地方使用的Devise的current_user? 我应该把这条线放在哪里? default_profi
我允许我的用户拥有多个配置文件(用户有很多配置文件),其中一个是默认配置文件.在我的users表中,我有一个default_profile_id.

我如何创建一个“default_profile”,比如我可以在任何地方使用的Devise的current_user?

我应该把这条线放在哪里?

default_profile = Profile.find(current_user.default_profile_id)

解决方法

Devise的current_user方法如下所示:

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

如您所见,@ current _#{mapping}正在被记忆.在你的情况下,你想要使用这样的东西:

def default_profile
  @default_profile ||= Profile.find(current_user.default_profile_id)
end

关于在任何地方使用它,我将假设您想在控制器和视图中使用它.如果是这种情况,您可以在ApplicationController中声明它,如下所示:

class ApplicationController < ActionController::Base

  helper_method :default_profile

  def default_profile
    @default_profile ||= Profile.find(current_user.default_profile_id)
  end
end

helper_method允许您在视图中访问此memoized default_profile.在ApplicationController中使用此方法允许您从其他控制器中调用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读