Вы уверены, что вам нужен массив в качестве вывода?казалось бы, хэш будет более удобным;более того, ваш сценарий проще встроить (обычно это знак того, что вы находитесь на правильном пути):
# example
results = [
OpenStruct.new(:x => 1, :cron_column => 0),
OpenStruct.new(:x => 2, :cron_column => 1),
OpenStruct.new(:x => 3, :cron_column => 1),
]
@array = results.group_by(&:cron_column)
# {0=>[#<OpenStruct x=1, cron_column=0>],
# 1=>[#<OpenStruct x=2, cron_column=1>, #<OpenStruct x=3, cron_column=1>]}
Если у cron_column «нет дыр» (вот и все, у вас есть значения от 0 доN), вы можете легко создать массив с этой же идеей: results.group_by(&:cron_column).sort.map { |k, v| v }
или results.group_by(&:cron_column).sort.map(&:last)
, как вы предпочитаете.