我有以下型号
class BackupJob
has_many :backup_controls
def controls_for_date(date)
return self.backup_controls.where("control_date > ?", date.beginning_of_day).where("control_date < ?", date.end_of_day)
end
end
class BackupControl
attr_accessible :status, :control_date
end
我希望在某个特定日期获得BackupControls的集合,并将它们分成不同的数组,每个状态一个。
controls = backup_job.controls_for_date(date)
controls.sort{|x,y| x.backup_control_status <=> y.backup_control_status}
将我的集合拆分为单独的数组的最佳方法是什么,每个状态一个?
答案 0 :(得分:1)
也许您可以使用group_by
,传入&:backup_control_status
。
答案 1 :(得分:0)
正如@Sergio所说,如果你想要一个排序的BackupControls集合,你应该首先按control_date对它进行排序,然后按照状态对它进行排序。这样的事情:
controls = backup_job.controls_for_date(date).sort_by(&:control_date).group_by(&:status)
这会给你一个Hash,键是状态,值是BackupControls的数组。