devise和current_user

时间:2011-08-16 23:13:42

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

我对设计系统有疑问。

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

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

用漂亮的东西我用过像

这样的东西
@current_company ||= Company.find(session[:company_id]) if session[:company_id]

感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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