1

我在尝试访问我的一个路由约束中的请求会话时遇到问题。我之前在 Rails 3 中使用过类似的东西,并且我在其他网站上也看到过使用类似东西的教程。出于某种原因,尽管在 Rails 4 中这不再有效。我必须对中间件加载进行调整吗?

配置/路由.rb

admin_constraint = lambda do |request|
  request.session[:user_id] == 1
end

引发的异常:

#<ActionDispatch::Request::Session:0x7fc878b35400 not yet loaded>
4

1 回答 1

2

所以为了让这个工作我必须首先为会话设置一个值。更新示例代码如下:

admin_constraint = lambda do |request|
  request.session[:init] = true # Starts up the session so we can access values from it later.
  request.session[:user_id] == 1
end

从这里您可以执行其他操作,例如从给定会话的数据库中加载用户记录:user_id 等。

于 2013-09-12T22:16:02.127 回答