使用Rails ActiveRecord查询未保存的对象

时间:2011-11-16 17:17:31

标签: ruby-on-rails ruby activerecord

是否可以使用Rail的ActiveRecord或其他类似方法查询未保存的更改?

下面是一个Ruby交互式会话的示例。我想看到的是,第四行显示'999'而不是'10'的结果。我习惯使用.NET和Entity Framework,其中可能有类似的东西。也许在Ruby中,有一种更好或不同的方式来做同样的事情。我显然可以在循环中加总和,但我发现查询语法更优雅。任何帮助表示赞赏。

i = Inventory.where(:product_id => 1)
i.sum(:available) => 10
i.first.available = 999
i.sum(:available) => 10

1 个答案:

答案 0 :(得分:4)

不,因为sum()实际上已转换为SQL并在db上运行,所以必须将记录保存到db中,以便查询返回所需的结果。

或者,你可以在ActiveSupport中使用Enumerable#sum方法,它采用一个块,如下所示:

all = Inventory.where(:product_id => 1).to_a
all.first.available = 999
all.sum(&:available)