我有 Ticket.rb 模型和 School.rb 模型。
门票belongs_to
学校
学校has_many
门票
如何使用ActiveRecord查找每所学校有多少门票的总数.count
?
我知道Ticket.where(:school_id => -insert School ID here-).count
会给我每个学校的个人数,但是我用它来将数据填充到图表中,所以我真的需要更像School.tickets.count
的东西。
这可能不会弄乱我的关联吗?
谢谢大家..
答案 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