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はどのように機能しますか?時々機能するように見えることもあれば、機能しないこともあります。
私は間違いなく非常に混乱しています。