在我的项目中,我需要使用一个全局变量,例如 devise (current_user(,因为在 ability.rb 中,我想知道他位于哪个项目中。类似于current_project。也许是会话的属性,例如project_id。有人做过这样的事情吗?多谢!
试试这个:您实际上需要在会话中存储变量。以自己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