获取数据库列的总和

时间:2014-01-01 05:56:21

标签: ruby-on-rails ruby database sum

我有一个包含3列的数据库表'posts':标题,内容和数量。金额有十进制数据类型,我正在尝试获取所有帖子的金额总和。

我想在从实例变量@balance中减去的索引路径上显示此总和。

这是我控制器中的操作

def index
    @posts = Post.all
    @balance = 300
    @spendingtotal = @balance - @posts.amount
end

但是这给了我一个错误:#

的未定义方法`amount'

2 个答案:

答案 0 :(得分:3)

使用Enumerable#inject

@spendingtotal = @balance - @posts.amount.inject(0) { |sum, post|
  sum + post.amount
}

更优选使用ActiveRecord::Calculations#sum方法:

@spendingtotal = @balance - Post.sum('amount')

答案 1 :(得分:3)

@posts是一个数组。这就是错误发生的原因。你可以使用

@spendingtotal = @balance - Post.sum(:amount)

如@falsetru

所述