Ruby group_by值作为资源集合

时间:2015-04-16 10:38:06

标签: ruby-on-rails ruby

我有Record型号。

record.rb

scope :some_record_scope ...

我可以在模型Record.some_record_scope

上使用此范围

但我需要按小时对此模型进行分组(例如)。并且在使用每个值后,将一些范围作为Record`s集合。 我的代码:

records = Record.all.order(:created_at)
grouped_records = records.group_by{ |r| r.created_at.strftime('%H') }

grouped_records.each do |interval, collection|
  collection.some_record_scope
  ...
end

但我看到错误:

NoMethodError: undefined method `some_record_scope' for #<Array:0x007fbb4d104b30>

我如何将它用作收藏品?

2 个答案:

答案 0 :(得分:0)

Record.some_record_scope.order(:created_at).group_by {|r| r.created_at.strftime('%H') }

答案 1 :(得分:0)

要为上述答案添加更多信息和说明,您收到错误的原因是因为您在调用范围之前调用了.all和.group_by,之前的答案是:

Record.some_record_scope.order(:created_at).group_by {|r| r.created_at.strftime('%H') }

有效,因为在ActiveRelation对象上调用了some_record_scope,因为它应该是, 就多个范围而言,我认为您可以链接范围引用,如Record.some_scope.another_scope.order......