2017-05-14 107 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

相關問題