2011-12-28 4 views
2

두 개의 테이블이 있습니다 : 하나는 프로젝트라고하고 다른 하나는 문서라고합니다 (프로젝트에는 많은 문서가 있고 문서는 프로젝트에 속합니다).레일스의 특정 열에 모든 행을 추가합니까?

Projects 테이블에는 사용자가 필요한 문서 수를 지정할 수있는 "제한"정수 열이 있습니다.

모든 제한을 더하고 단일 값을 얻고 싶습니다. 예를 들어, 프로젝트 A의 한계가 5이고 프로젝트 B의 한계가 10이고 프로젝트 C의 한계가 8 인 경우 "23"을 표시 할 수 있기를 원합니다.

적절한 Ruby 명령은 무엇입니까?

답변

6

ActiveRecord::Base는 합 방법과 SQL SUM 함수를 노출되므로

Project.sum(:limit) 

트릭을 수행한다. 이 범위를 인식하고 등등, 그래서 당신은 active이 사실 또는

person.projects.sum(:limit) 

는 사람과 관련된 사업의 한계를 요약 할 행 만 합계를 계산하는

Project.where(:active => true).sum(:limit) 

을 할 수

MIN, MAXAVERAGE과 유사한 방식으로 노출된다 (has_many 사람 또는 프로젝트 HABTM 가정).

+0

그 트릭을했습니다. 많은 감사합니다 @ frederick-cheung !! – cdotfeli

관련 문제