Rails 4计算has_many到多个级别

时间:2014-06-21 03:47:39

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

armyplatoons。每个platoon都有squadrons。每个squadron都有soldiers

鉴于army id,如何计算其中有多少士兵?这是针对Rails 4的,Rails 3的旧答案似乎没有使用最新的Active Record方法。

@army = Army.find(:id)

@army.platoons # This will return all platoons.

@armay.platoons.squadrons # Error: undefined method 'squadrons' for #<Platoon::ActiveRecord_Associations_CollectionProxy:0x007ff6f7752380>

1 个答案:

答案 0 :(得分:7)

在您的军队模型中,您需要:

has_many :platoons
has_many :squadrons, through: :platoons
has_many soldiers, through: :squadrons

现在你可以使用。

@army.soldiers.count