具有聚合的多个连接 - 与DB无关

时间:2014-07-29 11:03:27

标签: sql ruby-on-rails activerecord ruby-on-rails-4

我看过很多主题,但我找不到自己的方法。

我有三个型号。 A,B和C在ActiveRecord :: Base之后继续。

A
  belongs_to :b
  parts:integer

B
  belongs_to :c
C
  name:string

我想得到的是来自A的部分之和,按照C.name分组但完全独立于数据库以获得这样的结果:

{ 
  name1 => sumOfParts1,
  name2 => sumOFParts2,
  ...
}

我现在得到的是:

@results = @as.joins(:b).group('bs.c_id').sum(:parts)

看起来像这样

{ 
  1 => sumOfParts1,
  2 => sumOFParts2,
  ...
}

我是Rails的新手,但我想尽可能干净。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

@results = @as.joins(:b => :c).group('cs.name').sum(:parts)

或尝试添加到A:

has_one :c, through: b

然后你可以这样做:

@results = @as.joins(:c).group('cs.name').sum(:parts)