Один рефакторинг, который вы уже можете сделать, - это использовать named_scoped для ваших незавершенных задач:
class Shirt < ActiveRecord::Base
named_scope :unfinished, :conditions => {:finished => false}
end
Вы не хотите возвращать экземпляр (экземпляр означает только одну задачу).
Возможно, вы сможете заказать свои задачи, получить текущую сумму , а затем вернуть только задачи, у которых промежуточная сумма ниже 6. Мне нужно больше об этом думать, но если вы это сделаете таким образом, вы в конечном итоге будете использовать find_by_sql и магию SQL, предоставляемую выбранным вами механизмом БД.