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

ivo*_*ivo 3 global-variables devise ruby-on-rails-4

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

Sha*_*ved 6

试试这个:你实际上需要将变量存储在会话中.以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
Run Code Online (Sandbox Code Playgroud)

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

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