Rails 3:使用sum()时使用模型方法

时间:2017-05-14 19:16:28

标签: sql ruby-on-rails postgresql ruby-on-rails-3.2

我是铁杆新手。我试图弄清楚如何在sum() sql函数中使用模型方法。我试着寻找解决方案,但找不到解决方案。这是代码段:

SUM(indents.total_payable_amount_paid) AS sum_comm_t_amount_payable_paid

我想使用total_payable_amount_paid模型中定义的名为indent的方法。但它总是会出错:

PGError: ERROR:  column indents.total_payable_amount_paid does not exist.

那么这个问题的解决方案是什么?提前谢谢!

1 个答案:

答案 0 :(得分:0)

问题在于,SUM(我假设它在查询字符串中)将indents.total_payable_amount_paid作为该字符串的一部分。

为避免您可以使用字符串插值来设置所需的值,如下所示:

"SUM(#{indents.total_payable_amount_paid}) AS sum_comm_t_amount_payable_paid"

所以,让我们说indents.total_payable_amount_paid返回250,然后上面的代码会生成这个字符串:

"SUM(250) AS sum_comm_t_amount_payable_paid"

但是,使用SUM将不起作用,因为你给了一个值,所以你可以在没有它的情况下完成同样的事情:

"#{indents.total_payable_amount_paid AS sum_comm_t_amount_payable_paid"
#=> "250 AS sum_comm_t_amount_payable_paid"