activerecord的组方法。文档令人困惑?

时间:2015-03-17 06:32:48

标签: activerecord

我在Rails教程中没有得到这意味着什么:

组(* args)公开 允许指定组属性:

User.group(:name)

=> SELECT“users”。* FROM“users”GROUP BY name 返回一个基于group属性具有不同记录的数组:

User.group(:name) [User id: 3, name: "Foo", ...>, #User id: 2, name: "Oscar", ...>]

我没有看到他们给出的例子分组......

1 个答案:

答案 0 :(得分:1)

如果您尝试计算数据库中的内容或者连接多个表,那么组是最有用的(我认为)。我举几个例子。

1。 如果您想知道数据库中有多少用户名,那么您可以这样做:

User.group(:name).count

这将返回一个类似这样的哈希:

{ ann: 4, bert: 15, cecilia: 3 ... }

我不知道为什么数据库中存在这么多Berts但无论如何...

2。 如果您的用户有相关记录(例如汽车),您可以使用它来获取您的activerecord模型中包含的第一辆汽车(首先是因为团队的工作方式,并在下面的链接中进一步解释)< / p>

User.joins(:cars).select('users.*, cars.model as car_model, cars.name as car_name').group('users.id')

现在,此结果中的所有记录都会有一个名为car_model的方法和一个名为car_name的方法。

  1. 您可以通过一次查询计算每个用户拥有的汽车数量。

    User.joins(:cars).select('users。*,count(cars.id)as car_count')。group('users.id')

  2. 现在所有记录都有car_count

    进一步阅读:Mysql group tutorial

    希望这能为你们提供足够的亮点,让你们尝试一下。在你与他们合作之前,我认为你不能完全理解它们。