如何在Ruby on Rails控制台上使用app.get()设置会话变量?

时间:2010-06-11 04:45:51

标签: ruby-on-rails

如何在app.get()中调用script/console时手动设置会话?

例如,我想访问授权页面,但它总是将我重定向到登录页面。如何在致电app.get()之前设置会话,以便我可以对该页面进行授权调用?

4 个答案:

答案 0 :(得分:0)

取决于您用于会话身份验证的内容。如果您执行app.class,则会看到该应用是ActionController::Integration::Session。您需要做的是验证自己,然后点击您的受限页面

答案 1 :(得分:0)

这是我做过的一个丑陋的解决方法。

#Type in script/console
include ActionController::TestProcess
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@controller = SomeController.new
get 'action', {}, {:signed => 42} #action, params, session
#now @response has the updated response object.

在执行另一个get()/post() etc之前,请务必通过致电@controller重置@controller = SomeController.new,否则@response似乎无法在后续请求中更新。

答案 2 :(得分:0)

如果您提取临时文件,会话是可读的(http://tektastic.com/2006/12/ruby-on-rails-how-to-load-session.html),但除非您使用调试器,否则不会以可从控制台修改的方式存储会话哈希。

答案 3 :(得分:-1)