1

私のモデルには、Discountオブジェクト配列を返す3つの複雑なスコープがあります。これらはそれぞれ重複する可能性があるため、Ruby配列の和集合/共通部分/減算操作を実行したいと思います。

これらの操作はオブジェクトIDに依存すると思います。スコープが異なる場合、Discountクエリが同じオブジェクトと同じレコードを返すかどうか疑問に思っています。私のプログラムでは、それらは同じリクエストの間に行われます。

アップデート:

私は2回間違っていました。返される各オブジェクトは、実際には異なるオブジェクトです。また、それらは異なりますが、和集合/共通部分/減算操作は引き続き正しく機能します。

4

2 に答える 2

4

デフォルトでは no - 同じデータベース行を表す 2 つのオブジェクトを取得します。object_id説得力が必要な場合はチェックしてください。

Rails 3.1 以降では、 identity mapを有効にすることができます。これにより、特定のリクエスト内で、データベース内の単一の行が常に単一の ruby​​ オブジェクトによって表されることが保証されます。まだいくつかのねじれがあるため、デフォルトではオンになっていません。

于 2012-04-05T12:10:24.393 に答える
0

あなたが聞いたことを覚えているかもしれないのは、Railsアイデンティティマップだと思います。Rails 3.1で導入されましたが、関連付けを処理しないようであるため、デフォルトではオフになっています。

ドキュメントはここにあります:http://api.rubyonrails.org/classes/ActiveRecord/IdentityMap.html

元のプルリクエスト:https ://github.com/rails/rails/pull/76

そして、問題についての質問はここで見つけることができます:Rails 3.1 Identity Mapの問題?

于 2012-04-05T12:26:34.907 に答える