Rails大小为“第三级”成员

时间:2013-12-12 09:42:59

标签: ruby-on-rails

我有3个型号:

地区,社会,会员 - 他们是这样的: 地区有许多社团和社会有很多会员

我如何获得与地区相关的成员数量 - 比如说Region1有100个成员(每个成员都在他们自己的社团中)。

我很确定我需要一个范围...

THX!

2 个答案:

答案 0 :(得分:0)

您可以在这里使用has_many :through关联,如下所示:

class Region < ActiveRecord::Base
  has_many :societies
  has_many :members, through: :societies
end

class Society < ActiveRecord::Base
  belongs_to :region
  has_many :members
end

class Member < ActiveRecord::Base
  belongs_to :society
end

现在,您可以执行@region.members.count之类的操作来获取某个区域的成员总数。

答案 1 :(得分:0)

我不认为这是最快的方法,但这应该适用于您当前的设置:

Region.first.societies.inject(0){ |result,s| result += s.members.count }