我想计算所有受伤的身体组的百分比,但无法弄清楚。
伤害模型:
class Injury < ActiveRecord::Base
belongs_to :player
belongs_to :season
has_one :injury_type
end
InjuryType型号:
class InjuryType < ActiveRecord::Base
has_one :body_group
end
BodyGroup模型(无关联):
class BodyGroup < ActiveRecord::Base
end
我打印出这样的伤害总数:
= Injury.all.order('start_date ASC').count
... 但后来我被困了。在我看来,这应该是非常简单的,例如:
= Injury.where(injury_type.body_group_id => 1).count
如何打印身体组身份为1的受伤人数?我究竟做错了什么?我试过这个:
= Injury.joins(:body_group => :injury_type).where(:body_group => {:id => 1} )
...但这只给了我#<Injury::ActiveRecord_Relation:0x007ff14c929bf0>
,我无法将其变成.count或.sum。
答案 0 :(得分:3)
您有可能寻找如下所示的关联:
class Injury < ActiveRecord::Base
belongs_to :injury_type
end
class InjuryType < ActiveRecord::Base
belongs_to :body_group
has_many :injuries
end
class BodyGroup < ActiveRecord::Base
has_many :injury_types
end
通过这种方式,您可以简化查询:
Injury.joins(:injury_type).where(body_group_id: 1).count