2016-12-20 12 views
0

간단한 Ruby on Rails 응용 프로그램에서 저는 열의 하나가 "creationyear"라는 문자열 인 "제안"이라는 비계를 가지고 있습니다. 그것은 나를 제공하기 때문에, 어떻게 든Ruby on Rails - 비계의 항목 계산

def index 
    @proposals = Proposal.all 
    @count2015 = Proposal.count(:all, :conditions => "creationyear = 2015") 
    @count2016 = Proposal.count(:all, :conditions => "creationyear = 2016") 
end 

가 작동하지 않습니다 : 나는 인덱스 페이지는 다음 (에 "proposals_controller.rb"파일을)하고로드 할 때 매년 생성 얼마나 많은 제안을 계산하기 위해 노력하고있어 두 변수 모두 발판상의 총 엔트리 수.

누구든지이 문제를 해결하는 방법을 알고 있습니까? 레일즈 v4.2.6을 사용하고 있습니다.

감사합니다.

답변

0
@count2015 = Proposal.where(creationyear: '2015').count 

creationyear이 문자열이면 따옴표가 없습니다.

+1

완벽! 감사!!! –

0

왜 제안서를 연도별로 그룹화하지 않습니까?

@proposals = Proposal.group(:creationyear).count 

또는

@proposals = Proposal.group('creationyear').select('*, COUNT(*) as quantity') 

은 하나 개의 질의에 매년 일어나는 쿼리를 줄일 수 있습니다.

1

다른 답변은 괜찮지 만 약간의 배경 지식 만 제공하면됩니다.

Active Record에서 count이 사용되는 방식이 이전 버전의 Rails에서 변경되었습니다. 레일즈 3 또는 이전 버전의 예제를 통해 사용자가 시도한 방식으로 조건을 지정할 수 있습니다.

레일스의 최신 버전에서는 count을 열 이름과 함께 호출 할 수 있습니다.

Person.count(:email) # number of person records that have an email address 

하지만 where를 사용하고 그 다음에 count를 호출하여 예를 들어, 먼저 범위를 만들어 다른 경우에 사용됩니다

Proposal.where(creationyear: '2015').count