.where属性的wherewhere属性= string

时间:2015-06-18 14:05:52

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

我想计算所有受伤的身体组的百分比,但无法弄清楚。

伤害模型:

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。

1 个答案:

答案 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