这是我的模特。
用户 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 :(得分: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
答案 1 :(得分:0)
似乎是一组非常深层嵌套的关联。您可能需要再次查看模型,看看是否可以“减少”一些。也许就像只有一个用户和单位模型,然后添加块,邮政编码和邻居到单位,你可以做Unit.block和Unit.postal_code ...等。
对于您当前的配置(假设has_many / belongs_to的正确关联),您应该可以执行以下操作:
Neighbourhood.postal_code.block.unit.users.count
祝你好运!