2012-04-05 78 views
1

在我的模型中,我有三個複雜的作用域返回折扣對象數組。其中每一個都可以重疊,我想做一些Ruby數組聯合/交集/減法操作。兩個activerecord查詢是否將同一個對象返回一條記錄?

我想這些操作取決於對象ID。我想知道,如果折扣查詢將通過不同的作用域返回與同一個對象相同的記錄。在我的計劃中,這些將在同一請求期間完成。

更新:

我錯了,兩次。每個返回的對象是真正不同的對象。儘管它們不同,但聯合/交叉/減法操作仍能正常工作。

+0

您是否嘗試過測試這個?這很容易做到。 – meagar 2012-04-05 11:34:43

回答

4

默認情況下不會 - 您會得到兩個表示同一數據庫行的對象。如果您需要說服力,請檢查object_id

在Rails 3.1及以上版本中,您可以打開identity map。這可以確保在給定的請求中,數據庫中的單個行將始終由單個ruby對象表示。它裏面還有一些問題,這就是爲什麼默認情況下它沒有打開。

+0

謝謝,我一直在想id是object_id,是的每個查詢返回不同的東西。 – lulalala 2012-04-05 12:17:51

相關問題