2014-08-28 4 views
0

초보자 경고 ... 예를 들어레일 4, 반환 쿼리 데이터와 총 개수

: 난, 테이블 역할 및 테이블 사용자 역할 has_many 사용자 레일 4

이 내가 보여줄 수있는 DB에 대한 쿼리가 하나 뿐인 모든 역할에 total_users 수를 가진 모든 역할? 그래서 롤의 모든 레코드에 total_users라는 추가 열이 1 개 있습니다. total_users는 User에서 "users", "role_id"= "roles". "id"로 계산됩니다. "id"

나는 여러 번 시도하고 있습니다. , 나는 시도했다 :

roles = Role.joins(:users).group("roles.id").count 

그리고 그것은 단지 count의 반환 값이다. 내가 원하는 것은 쿼리의 반환 값은 Role의 모든 데이터와 단일 쿼리의 사용자 수 모두입니다.

이 내가 결과를 바라는 것들입니다 :

[#<Role id: 1, holding_company_id: 1, name: "admin", created_at: nil, updated_at: nil, description: nil, **total_users: ...** >, #<Role id: 2, holding_company_id: 2, name: "user", created_at: nil, updated_at: nil, description: nil, **total_users: ...**>] 

사람이 매우 간단한 문제에 대한 나를 도울 수 있습니까 ?? 나는 postgreSQL을 사용했다.

답변

0

두 결과를 별도의 변수에 보관해야한다.

roles = Role.joins(:users).group("roles.id") 

roles_count = roles.count 

역할에는 테이블 행의 배열과 개수가 하나의 값을 가지므로 별도로 보관해야합니다.

당신은 단일 개체 모두가 열심히 값

+0

그래서 결국, 역할의 테이블의 배열에 TOTAL_USERS을 결합 할 다른 방법이 없기를 처리하기 위해 수행하는 경우? – azy