Rails 4计算has_many到多个级别

Don*_*n P 2 ruby-on-rails ruby-on-rails-4 rails-activerecord

A armyplatoons.每个人platoon都有squadrons.每个人squadron都有soldiers.

鉴于armyid,我如何计算其中有多少士兵?这是针对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>
Run Code Online (Sandbox Code Playgroud)

son*_*002 7

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

has_many :platoons
has_many :squadrons, through: :platoons
has_many soldiers, through: :squadrons
Run Code Online (Sandbox Code Playgroud)

现在你可以使用了.

@army.soldiers.count
Run Code Online (Sandbox Code Playgroud)