2017-05-14 7 views
0

私はレールが初めてです。私は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を使用すると、1つの値を与えているので、何もしないので、同じものをそれなしで実行できます。

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

お返事ありがとうございます。残念ながら、これは私のためには機能しません。私はdbカラムだけを使ってこれを解決する別の方法を見つけました。私は以前に達成しようとしていたもの(つまり、この質問)は意味をなさないと思います。 – Akshay

関連する問題