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