2017-05-14 20 views
0

我是rails新手。我试图弄清楚如何在sum() sql函数中使用模型方法。我试图寻找解决方案,但找不到一个。下面的代码片段:Rails 3:在使用sum()时使用模型方法()

SUM(indents.total_payable_amount_paid) AS sum_comm_t_amount_payable_paid 

我想使用方法称为内indent模型中定义total_payable_amount_paid。但它总是给出一个错误:

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

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

+0

你想做什么?无论你把“SUM”放在哪里,都需要你模型表格中列的_name_,这就是你得到这个错误的原因。 – Gerry

+0

我知道。我没有在表中的字段,而是我有一个方法,只是返回一个值。除了向表中添加新字段之外是否还有其他可行的解决方案? – Akshay

+0

我添加了一个可以帮助你的答案,但我很好奇:你为什么要添加一个这样的值?如果你分享更多的代码,将会更容易为你的问题提供更好的解决方案。 – Gerry

回答

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" 
+0

感谢您的回复。不幸的是,这对我不起作用。我发现了另一种方法来解决这个问题,只使用数据库列。我想我以前想要完成的事情(即这个问题)没有任何意义。 – Akshay

相关问题