我有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>
我如何将它用作收藏品?
答案 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......