获得相关模型的.count

时间:2013-11-25 21:54:12

标签: ruby-on-rails count associations

我有 Ticket.rb 模型和 School.rb 模型。

门票belongs_to学校

学校has_many门票

如何使用ActiveRecord查找每所学校有多少门票的总数.count

我知道Ticket.where(:school_id => -insert School ID here-).count会给我每个学校的个人数,但是我用它来将数据填充到图表中,所以我真的需要更像School.tickets.count的东西。

这可能不会弄乱我的关联吗?

谢谢大家..

2 个答案:

答案 0 :(得分:3)

Ticket.group(:school_id).count

这将为您提供每个学校ID的门票数量,其中key为school_id,值为门票数量

如果您想按学校的其他属性分组,那么

Ticket.joins(:school).group("schools.name").count

例如输出:

{3 => 10, 4 => 30}

答案 1 :(得分:0)

如果您有特定的学校实例(例如@school),则可以使用 @school.tickets.count

为了获得更好的性能,您可以在控制器中使用group方法here

所以在你的控制器中:

def someaction
  @school_tickets = Ticket.group(:school_id)
end

在您的视图中,您可以遍历@school_tickets,例如:

@school_tickets.each do |school_ticket|
  school_ticket.count
end