如何在Rails中创建和使用像current_user(devise)这样的全局变量?

时间:2014-12-07 22:50:58

标签: ruby-on-rails-4 devise global-variables

在我的项目中,我需要使用像devise(current_user)那样的全局变量,因为在ability.rb中我想知道他所在的项目。类似于current_project的东西。也许是会话的属性,比如project_id。 有人做过类似的事吗?非常感谢!

1 个答案:

答案 0 :(得分:5)

试试这个: 实际上,您需要将变量存储在会话中。 以current_user为例自我: - 在您的应用程序控制器(/app/controllers/application_controller.rb)中添加一个帮助方法,如下所示:

 class ApplicationController < ActionController::Base

  protect_from_forgery

  helper_method :current_user

  private
  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end
end

current_user方法使用会话变量中的id获取当前用户的id,并将结果缓存到实例变量中。我们也将它作为辅助方法,以便我们可以在应用程序的视图代码中使用它。

参考 - http://railscasts.com/episodes/250-authentication-from-scratch?view=asciicast