【问题标题】:devise and current_user设计和 current_user
【发布时间】:2011-08-16 23:13:41
【问题描述】:

我有一个关于设计系统的问题。

我的最后一个 ruby​​ 项目是使用 nifty:authentication 完成的。使用 nifty,我可以管理 current_user 的会话和来自“controller_authentication.rb”的其他信息。但是现在,我想添加一个新的 current_* 信息。

我想知道在哪里可以找到 current_user 方法?它是在哪里定义的?

我使用了类似的东西

@current_company ||= Company.find(session[:company_id]) if session[:company_id]

谢谢。

【问题讨论】:

    标签: ruby ruby-on-rails-3 devise ruby-on-rails-plugins


    【解决方案1】:

    current_user 在设计源代码中被定义为助手。当您在项目上安装设计时,它也会被激活。

    【讨论】:

    • 作为帮手?我的应用程序中没有名为 session、devise 或 user 的助手。是在别的地方吗?
    • @neimad: session 是 Rails 方法,devise 是 Devise 方法,你在哪里看到用户?
    • 嗯,我不确定我明白你在问什么?我在哪里看到用户?
    • session 在 Rails 内部管理,devise 和 user 在设计中。
    • 啊,是的,我知道,但是,以前,通过漂亮的身份验证,我刚刚修改了 control_authentication.rb 以添加我需要的内容。当用户登录时,我需要创建一个新的全局变量(方法?)。比如 current_user,我想创建一个 current_company 等。但是当我们登录时我无法找到 current_user 的创建位置。
    【解决方案2】:

    current_user 在 Devise 中动态定义。由于您的用户模型实际上可能是不同的模型,因此该方法在定义 current_whatever 辅助方法时使用您的模型名称进行“映射”:

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

    https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/helpers.rb#L123

    【讨论】:

      猜你喜欢
      • 2013-06-10
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多