0

这是我的模型。

用户 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>

提前致谢。

4

2 回答 2

0

似乎是一组非常嵌套的关联。您可能想再看看您的模型,看看您是否可以将它们“修剪”一点。也许像只有一个用户和单元模型,然后将块、邮政编码和社区添加到单元中,您可以在其中执行 Unit.block 和 Unit.postal_code...等。

按照您当前的配置(假设 has_many/belongs_to 的正确关联),您应该能够执行以下操作:

Neighbourhood.postal_code.block.unit.users.count

祝你好运!

于 2012-10-18T12:44:54.490 回答
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
于 2012-10-17T05:03:20.770 回答