Rails从两个表中的关联加入

时间:2013-12-16 22:11:49

标签: mysql ruby-on-rails ruby join associations

我需要表格:员工和部门

一个员工属于一个部门(belongs_to),一个部门有多个员工(has_many)

我想做的是计算每个部门的员工数量,并用数据制作饼图,我让图表使用基本的东西(Department.count)

我刚开始使用rails,我遇到了查询问题

Associate.joins(:department).group(:name).count

我得到的是以下

  

Mysql2 ::错误:字段列表中的列'名称'不明确:SELECT COUNT(*)AS count_all,name AS name FROM associates INNER JOIN departments ON departments。{ {1}} = idassociates GROUP BY名称

我尝试做一个选择,找到并且我似乎无法做到正确

2 个答案:

答案 0 :(得分:0)

如果您的关联设置正确,我相信您应该能够做到这样的事情:

Department.find(<some_id>).associates.count

或者如果你有所有的部门,并且你正在循环它们,让我们在一个视图中说,你想得到所有的计数,你可以做这样的事情:

@departments = Deparment.all

@departments.each do |department|
  department.associates.count
end

您的关联表格上需要department_id列。

答案 1 :(得分:0)

正如您对帖子的评论所述,您必须通过指定表来解决模糊的name归因。您可以使用建议的字符串,也可以将块传递给group_by

Associate.joins(:department).group_by(&:name).count