관리자 제어판을 만들고 있는데 마지막 단계에 있습니다.성별 특정 등록 사용자 수를 표시하는 방법
Male
을 gender
으로 선택한 등록 된 사용자에 대한 통계는 어떻게 만듭니 까?
예 :
545 남성 등록 된 사용자
(323) 여성 등록 된 사용자
그래서 나는 나의 뷰에서 출력 위의 예를 싶습니다.gender
열의 행을 계산하는 방법을 잘 모르겠습니다.
관리자 제어판을 만들고 있는데 마지막 단계에 있습니다.성별 특정 등록 사용자 수를 표시하는 방법
Male
을 gender
으로 선택한 등록 된 사용자에 대한 통계는 어떻게 만듭니 까?
예 :
545 남성 등록 된 사용자
(323) 여성 등록 된 사용자
그래서 나는 나의 뷰에서 출력 위의 예를 싶습니다.gender
열의 행을 계산하는 방법을 잘 모르겠습니다.
User
필드에 gender
필드가 있다고 가정하면 사용자 클래스에 클래스 메서드를 추가 할 수 있습니다.
class User < ActiveRecord::Base
def self.total_males
where(gender: 'male').count
end
def self.total_females
where(gender: 'female').count
end
end
그런 다음보기
<%= User.total_males %> Male registered users
<%= User.total_females %> Female registered users
에 당신은 또한 인덱스는 당신이 당신의 성별 필드 쿼리를 빠르게 확인하는 것이 좋습니다. 이주시 색인을 추가 할 수 있습니다.
'scope'로 기대하는 것은 ActiveRecord_Relation 객체를 반환한다는 것입니다. 기술적으로 가능 함에도 불구하고 다른 것을 반환하는 나쁜 습관. 이것들은 클래스 메소드로서 더 좋을 것이다. 또는 범위에서'.count'를 제거하고 인라인 ('.total_males.count')을 호출하십시오. –
좋은 지적. 편집 할 것입니다. – JosephL
그래서 여기에 약간의 텔레파시입니다 :) 당신이 그것을에서 :gender
속성 (문자열 '남성'또는 '여성')와 모델 User
이 있다고 가정, 당신은 제공되지 충분한 정보가 없습니다. 그래서 필요하기 수는 다음과 같이 표시됩니다
User.group(:gender).count
이이 같은 SQL 쿼리를 제공합니다 :
SELECT COUNT(*) AS count_all, gender AS gender FROM `users` GROUP BY `users`.`gender`
을 그리고 당신은이 같은 해시 얻을 것이다 :
{ 'male' => 545, 'female' => 323 }
사용이)
UPD : 추가 필터링 (예 : 등록 또는 somethi ng), where 절을 추가하십시오.
UPD2 :이 솔루션은 현재 모든 통계를 가져 오는 것입니다. 특정 성별에 대한 통계 만 원하면 아래의 JosephL의 답변을 사용해야합니다.
당신이 실제로 찾고있는 것에 관해서, 나는 당신이 무엇을 요구하고 있는지 확신하지 못합니다. 사용자가 일종의 성별 필드 또는 gender_id를 사용한다고 가정합니다. 그 행 수. –
네, 그게 제가 묻는 것입니다. 뷰에서 행과 출력을 계산하는 방법. – xps15z