有没有办法使用 group 来选择 Rails 中分组记录的 ID?

B S*_*ven 5 sql postgresql ruby-on-rails ruby-on-rails-4

Purchase.all.group( :user_id ).sum( :price )
Run Code Online (Sandbox Code Playgroud)

这返回

[{ 1 : 234 }, { 2 : 345 }, ...
Run Code Online (Sandbox Code Playgroud)

是否可以提取Purchase ID?

例如,假设第一组返回:

{ user_id : 1, price : 234, ids : [3,6,9] }
Run Code Online (Sandbox Code Playgroud)

AbM*_*AbM 6

使用 postgresql,您可以使用array_agg

Purchase.select('user_id, sum(price) as price, array_agg(id) as ids').group('user_id')
Run Code Online (Sandbox Code Playgroud)

  • 你是对的。id 不在 AR 关系中。但是,当使用`.ids` 访问它们时,它们就在那里。你是怎么发现的?为什么它会这样工作? (2认同)