【问题标题】:Rails 4 get count for has_many through, multiple levelsRails 4通过多个级别获得has_many计数
【发布时间】:2014-06-21 03:47:38
【问题描述】:

army 具有 platoons。每个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>

【问题讨论】:

  • 您的意思是armyplatoons 一样多,而不是squadrons?请检查您问题中的名称,它们看起来一团糟。
  • 修复了一个错误的命名。感谢您指出 Tamer

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


【解决方案1】:

在你的军队模型中你需要:

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

现在可以使用了。

@army.soldiers.count

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 2014-12-16
    • 2013-03-21
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2016-10-06
    • 2014-12-12
    相关资源
    最近更新 更多