1

在我的模型中,我有三个返回 Discount 对象数组的复杂范围。这些中的每一个都可以重叠,我想做一些 Ruby 数组联合/交集/减法操作。

我猜这些操作取决于对象ID。我想知道折扣查询是否会在通过不同范围时返回与同一对象相同的记录。在我的程序中,这些将在同一个请求期间完成。

更新:

我错了,两次。返回的每个对象都是真正不同的对象。尽管它们不同,联合/交集/减法运算仍然可以正常工作。

4

2 回答 2

4

默认情况下没有 - 您将获得代表同一数据库行的两个对象。检查object_id是否需要说服力。

在 Rails 3.1 及更高版本中,您可以打开身份映射。这确保了在给定请求中,数据库中的单行将始终由单个 ruby​​ 对象表示。它仍然存在一些问题,这就是默认情况下不启用的原因。

于 2012-04-05T12:10:24.393 回答
0

我想你可能记得听到过的是 Rails Identity Map。它是在 Rails 3.1 中引入的,但默认情况下是关闭的,因为它显然不处理关联。

文档在这里:http ://api.rubyonrails.org/classes/ActiveRecord/IdentityMap.html

原始拉取请求:https ://github.com/rails/rails/pull/76

关于这些问题的问题可以在这里找到:Rails 3.1 Identity Map issues?

于 2012-04-05T12:26:34.907 回答