Don*_*n P 2 ruby-on-rails ruby-on-rails-4 rails-activerecord
A army有platoons.每个人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)
在您的军队模型中,您需要:
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)