我有一个Ticket.rb模型和School.rb型。
门票belongs_to
学校
学校has_many
门票
我如何使用ActiveRecord来了解每个学校有多少张门票的.count
总数?
我知道Ticket.where(:school_id => -insert School ID here-).count
会给我每个学校的个人计数,但我正在用它将数据填充到一个图表中,所以我真的需要更像School.tickets.count
的东西。
这有可能不打乱我的联想吗?
谢谢大家。。
Ticket.group(:school_id).count
这将为您提供每个学校id的门票计数,其中key为学校id,value为门票计数
如果你想在学校上按不同的属性分组,那么
Ticket.joins(:school).group("schools.name").count
例如输出:
{3 => 10, 4 => 30}
如果您有一个特定的学校实例(如@school
),您可以使用@school.tickets.count
。
为了获得更好的性能,您可以在此处概述的控制器中使用group
方法。
所以在你的控制器中:
def someaction
@school_tickets = Ticket.group(:school_id)
end
在您的视图中,您可以循环使用@school_tickets
,例如:
@school_tickets.each do |school_ticket|
school_ticket.count
end