2012-10-17 7 views
0

여기 내 모델입니다.레일 : 사용자 수를 계산하는 방법?

사용자 unit_id

단위 는 블록

을 block_id neighbourhood_id

을 PostalCode

을 postalcode_id 16,

환경

관계가 모든이다 이름은 최고입니다 바닥

에 속하는이 내 현재 index.html.erb 파일, 나는 각 동네에 출력하는 사용자의 수를 할 수 있습니다.

<% provide(:title, 'Neighbourhoods') %> 
<ul class="thumbnails"> 
    <% @neighbourhoods.each do |neighbourhood| %> 
    <li class="span3"> 
     <div class="thumbnail"> 
      <div style="position:relative;"> 
       <%= link_to "Join", '#', class: "btn-join" %> 
       <%= image_tag(neighbourhood.name+".jpg", alt: neighbourhood.name) %> 
      </div> 
      <h2 style="margin-bottom:0px"><%= neighbourhood.name.titleize %></h2> 
      <% neighbourhood.postalcodes.each do |postalcode| %> 
      <%= postalcode.blocks.map(&:block).join(", ") %> 
      <% end %> 
      <br> 
      <%= neighbourhood.streetname.titleize %> 
     </div> 
    </li> 
    <% end %> 
</ul> 

미리 감사드립니다.

답변

0

가정 이웃 has_many 사용자 :

<%= neighbourhood.users.size %> 

참고 선택적 counter_cache를 사용하여 속도에 대한 사용자의 수를 캐시 할 수 있도록 그 계산이 비교적 느린 옵션입니다 :

class User < ActiveRecord::Base 
    belongs_to :neighborhood, :counter_cache => true 
end 

을 그 다음에 이전 :

add_column :neighborhoods, :users_count, :integer, :default => 0 
+0

안녕하세요, Alex 님, 빠른 답변을 보내 주셔서 감사합니다. 내 모델에는이 관계가 없으므로 관계는 지역 -> 우편 번호 -> 블록 -> 단위 -> 사용자입니다. 이 대신에 해결책이 있습니까 ?? 감사. – user1627056

0

awfull처럼 보입니다. 깊게 중첩 된 연관 집합. 당신은 당신의 모델을 두 번째로보고 싶을 수 있습니다. 어쩌면 단지 User와 Unit 모델을 가지고 있고, Unit.block과 Unit.postal_code ... ect를 할 수있는 Unit에 블록, 우편 번호, 이웃을 추가 할 수 있습니다.

현재 구성 말했다되고 그건

당신이 좋아하는 일을 할 수 있어야한다 (has_many/belongs_to의 정확한 연결을 가정) :

Neighbourhood.postal_code.block.unit.users.count 

행운을 빕니다!

+0

# 에 대한 정의되지 않은 메소드 '블록'이 작동하지 않습니다. 하나의 우편 번호에 많은 블록이있을 수 있으므로이 방법이 필요합니다. – user1627056

+0

현재 사용중인 모델과 관계 (has_one, has_many, belongs_to)를 게시하십시오. – Lumbee

관련 문제