起動時に DB から読み取るクラスがあります。セッションに保存できるようにしたいのですが、保存しようとすると次のエラーが発生します: ERROR TypeError: no marshal_dump is defined for class Mutex もしそうなら、どうすればいいですか?そうでない場合、セッションにクラス インスタンスを保存する代わりに何が良いでしょうか? 現在、私の回避策は、使用する必要があるときはいつでもインスタンス化することですが、それは良い解決策またはスケーリングできる解決策とは思えません。
質問する
120 次
1 に答える
1
別の良い方法は、レコードの ID をセッションに保存することです。次に、そのデータが再び必要になったときに、ヘルパーを使用してメモリまたはデータベースからデータを返します。完璧な例は、多くの ruby 認証 gem に見られる current_user ヘルパー メソッドで使用されるパターンです。キャッシュ レイヤーがボトルネックであることがわかった場合は、このヘルパーを変更してキャッシュ レイヤーを使用することもできますが、それは事後の最適化として残します。
オブジェクトをセッション内で問題なく動作するマーシャリングされた形式に変換する必要があるという問題、ストレージ スペース、古いデータ、および機密データへの意図しない露出に関する問題があります。
于 2013-07-11T16:50:25.977 に答える