Rails如何汇总列?

Rai*_*ner 33 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

示例我有:

@test = Pakke.find([[4], [5]])
Run Code Online (Sandbox Code Playgroud)

在我的Pakke表中,我有一个名为的列 prismd

如何将prismd @test 的列的两个值相加?

Hol*_*ust 52

您可以通过创建相应的SQL直接汇总数据库,如下所示:

Pakke.sum(:prismd, :conditions => {:id => [4,5]})
Run Code Online (Sandbox Code Playgroud)

有关更多用法示例和一般文档,请参阅ActiveRecord :: Calculations.


Jor*_*ing 34

ActiveRecord有一堆内置的计算方法,包括sum:

@test = Pakke.where(:id => [4, 5] ).sum(:prismd)
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,**不要**使用`.sum(&:prismd)`.这将通过Ruby完成计算.做@Jordan所说的将通过SQL完成计算并且******,**更快**. (8认同)

Rai*_*ner 5

Pakke.find([[14], [15]]).map(&:prismd).sum
Run Code Online (Sandbox Code Playgroud)

  • 这不会很有效,因为它必须实例化所有记录,然后在 Ruby 端而不是直接在数据库中求和。 (2认同)