2017-05-14 10 views
0

레일을 처음 사용합니다. 나는 sum() SQL 함수 안에서 model 메소드를 사용하는 방법을 알아 내려고하고있다. 해결책을 찾으려고했지만 하나를 찾을 수 없었습니다. 여기 코드는 다음과 같습니다레일 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를 사용
"SUM(250) AS sum_comm_t_amount_payable_paid" 

하지만, :

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

응답 해 주셔서 감사합니다. 불행히도 이것은 나를 위해 작동하지 않습니다. db 컬럼 만 사용하여이 문제를 해결하는 또 다른 방법을 찾았습니다. 나는 내가 이른시기에 (즉,이 질문을) 성취하려고 시도한 것이 의미가 없다고 생각한다. – Akshay