Bea*_*epp 6 ruby activerecord ruby-on-rails-3
我有一个活跃的记录查询,我正在使用group_by
@foo = Foo.group_by(&:relation)
Run Code Online (Sandbox Code Playgroud)
然后在我正在使用的视图中
@foo.each do |group, values|
group x has values.count elements
end
Run Code Online (Sandbox Code Playgroud)
有没有办法按每组的数量对这些进行排序?
group_by不是ActiveRecord方法,组是.group_by是一个Enumerator方法.
关于什么
@foo = Foo.group('relation').order('count_id asc').count('id')
Run Code Online (Sandbox Code Playgroud)
否则,如果你想在Ruby级别上对它进行排序,你可以这样做
disordered_hash = {:two=>[1, 2], :one=>[1], :three=>[1, 2, 3]}
ordered_array = disordered_hash.sort {|k, v| k[1].count <=> v[1].count} # add .reverse if you want
# => [[:one, [1]], [:two, [1, 2]], [:three, [1, 2, 3]]]
Run Code Online (Sandbox Code Playgroud)