【问题标题】:Ruby Sinatra Session Management Available in Class Methods?Ruby Sinatra 会话管理在类方法中可用?
【发布时间】:2017-05-20 20:52:11
【问题描述】:

只是想知道会话的范围是否可以在自定义对象中进行管理。尝试在用户的方法中设置会话变量时出现以下错误:

undefined local variable or method `session' for #<User:0x007fd6f4117ba0>
file: user.rb location: log_in line: 315

如果能够在方法而不是路由中折腾会话管理,那就太好了。使用 Sinatra 的会话:

enable :sessions

【问题讨论】:

  • 我很想知道更好的解决方案,但作为一种解决方法,您可以将method(:session) 作为参数传递,然后传递.call
  • @maxple 你的技巧对简单地将session 对象作为参数传递有什么好处?
  • @To마SE 在这种情况下你是对的,但对于像render这样的其他东西不起作用
  • 本质上,它对滚动你自己的会话嗅探是开放的。 Sinatra 应该提供这一点。 2.0中没有提及。我还在调查这件事。我是 Ruby 新手。
  • 将会话对象传递给方法是您的选择吗? sessions 不可用的原因是方法不保留执行环境(ala lambda/closure),添加此类功能可能会导致比它解决的问题更多的问题。但如果你认为它应该以某种形式存在,请在 github.com/sinatra/sinatra/issues 上打开一个功能请求。

标签: ruby class session sinatra


【解决方案1】:

也许您应该首先在课堂服务中启用会话。

启用:会话 设置:session_secret ....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 2012-07-05
    • 2010-11-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多