通过连接表Rails 4进行分组

时间:2015-09-01 09:00:38

标签: ruby-on-rails-4 group-by

我希望这很简单,但实质上我想通过Rails 4中的连接表计算具有某些属性的用户数。

我有一个名为Views的表格,其中包含三列:

  t.references :viewer
  t.references :viewed
  t.boolean :sentmessage, default: false

然后我将字段引用为:

belongs_to :viewer, :class_name => "User"
belongs_to :viewed, :class_name => "User"

然后,每个用户记录与许多其他记录相关联,例如统计,问题和许多其他记录。我有兴趣有效地计算viewersviewedgroup个记录是男性还是女性(和其他搜索字段),这些数据都是在User.stat.gender.name等中保存的。

我正在尝试使用@results = View.where(viewed: 63).group("viewer.stat.gender") 语句,但不知道如何向下钻取并计算男性等数量。我尝试过:

array(4) {
  [0]=>
  array(18) {
    ["ID"]=>
    int(32)
    ["id"]=>
    int(32)
    ["title"]=>
    string(15) "President Image"
    ["filename"]=>
    string(11) "3f666ad.jpg"
    ["url"]=>
    string(63) "http://localhost/moderna/wp-content/uploads/2015/08/3f666ad.jpg"
    ["alt"]=>
    string(15) "President Image"
    ["author"]=>
    string(1) "1"
    ["description"]=>
    string(0) ""
    ["caption"]=>
    string(17) "This is a caption"
    ["name"]=>
    string(7) "3f666ad"
    ["date"]=>
    string(19) "2015-08-25 05:18:16"
    ["modified"]=>
    string(19) "2015-08-31 14:05:45"
    ["mime_type"]=>
    string(10) "image/jpeg"
    ["type"]=>
    string(5) "image"
    ["icon"]=>
    string(61) "http://localhost/moderna/wp-includes/images/media/default.png"
    ["width"]=>
    int(200)
    ["height"]=>
    int(200)

但这太可怕了,令人恐惧。

如果有任何帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我终于解决了。对于其他感兴趣的人:

View.where(viewed_id: 63).joins(viewer: {stat: :gender}).group("name").count

没有意识到INNER JOIN是什么,但是一些研究和一些反复试验意味着我现在可以显示有关访问过的用户的信息。