2012-10-17 44 views
0

这是我的模特。Rails:如何统计用户数量?

用户 UNIT_ID

单位 BLOCK_ID

postalcode_id

邮编 neighbourhood_id

邻居

关系是所有的顶级属于底部

这是我目前的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

嗨亚历克斯,感谢您的快速反应。我的模型没有这个关系,因此关系是邻域 - >邮编 - >块 - >单元 - >用户。有没有解决这个问题的方法?谢谢。 – user1627056

0

看起来像一个awfull深度嵌套的关联集。你可能想再次看看你的模型,看看你是否可以“稍微修剪它们”。也许像刚刚有一个用户和单位模型,然后添加块,邮政编码和邻居到单位,你可以做Unit.block,Unit.postal_code ...等。

这是与当前的配置说(假设的has_many/belongs_to的正确协会),你应该能够做这样的事情:

Neighbourhood.postal_code.block.unit.users.count 

祝你好运!

+0

未定义的方法'块'为#无法工作。我需要这种方式,因为一个邮政编码可能有很多块 – user1627056

+0

发布你所有的模型及其关系(has_one,has_many,belongs_to),所以我们知道你目前在使用什么。 – Lumbee

相关问题