是否可以使用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
答案 0 :(得分:4)
不,因为sum()
实际上已转换为SQL并在db上运行,所以必须将记录保存到db中,以便查询返回所需的结果。
或者,你可以在ActiveSupport中使用Enumerable#sum方法,它采用一个块,如下所示:
all = Inventory.where(:product_id => 1).to_a
all.first.available = 999
all.sum(&:available)