我不太确定 scoped_session 是如何工作的,除了它似乎是一个隐藏多个真实会话的包装器,将它们分开处理不同的请求。它对线程本地人这样做吗?
无论如何,麻烦如下:
S = elixir.session # = scoped_session(...)
f = Foo(bar=1)
S.add(f) # ERROR, f is already attached to session (different session)
不知道 f 如何在不同的会话中结束,我之前没有遇到过问题。在其他地方,我的代码看起来就像那样,但实际上可以工作。正如你可以想象的那样,我觉得这很令人困惑。
我只是在这里什么都不知道,f 似乎被神奇地添加到构造函数中的会话中,但我似乎没有对它使用的会话的任何引用。为什么它会在不同的会话中结束?我怎样才能让它在正确的会话中结束?这个 scoped_session 是如何工作的?它有时似乎起作用,而其他时候却不起作用。
我肯定很困惑。