kst*_*715 5 ruby activerecord ruby-on-rails
是否可以使用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
Run Code Online (Sandbox Code Playgroud)
不,由于sum()实际上已转换为 SQL 并在 db 上运行,因此您必须将记录保存到 db 中,以便查询返回您想要的结果。
或者,您可以使用ActiveSupport 中的Enumerable#sum方法,它接受一个块,如下所示:
all = Inventory.where(:product_id => 1).to_a
all.first.available = 999
all.sum(&:available)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |