我在尝试访问某个路由限制中的请求会话时遇到问题。我以前在Rails 3中使用过这样的东西,我也看到了在其他网站上使用类似内容的教程。出于某些原因,虽然在Rails 4中这不再有效。我是否必须调整中间件装载?
配置/ routes.rb中
admin_constraint = lambda do |request|
request.session[:user_id] == 1
end
引发的异常:
#<ActionDispatch::Request::Session:0x7fc878b35400 not yet loaded>
答案 0 :(得分:1)
所以为了让这个工作,我必须先为会话设置一个值。更新了示例代码如下:
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
从这里开始,您可以执行其他操作,例如在给定会话的情况下从db加载用户记录:user_id等。