我想对从ActiveRecord查询返回的数组执行操作。这是我直接在ActiveRecord上完成的功能。
Modification.find(:all, :group=>'ref_id,start_date', :order=>'updated_at desc')
以上工作正常如预期。但问题是由于某些原因我不能直接执行它。但我有一个阵列。我不能在数组上使用:group
符号,原因显然不是ActiveRecord。但我想要相同的功能。像
modifications = Modification.all
modifications.find(:all, :group=>'ref_id,start_date').sort(:order=>&:updated_at)
上述原因不明显,但如何为数组执行类似的ActiveRecord实现。
答案 0 :(得分:2)
如果您想在小组前排序:
modifications.group_by{|modification| "#{modification.ref_id}#{modification.start_date}"}.values.collect{|modification_array|
modification_array.sort_by{|mod| mod.updated_at}.last
}
如果您想要排序:
modifications.group_by{|modification| "#{modification.ref_id}#{modification.start_date}"}.values.map(&:first).sort_by{|mod| mod.updated_at}.invert
尚未测试:)。