2012-04-05 108 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

相关问题