diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 38539b9b..6ef7d4d8 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -280,14 +280,14 @@ class ApplicationController < ActionController::Base def init_not_done_counts(parents = ['project','context']) parents.each do |parent| - eval("@#{parent}_not_done_counts ||= current_user.todos.active.group('#{parent}_id').count") - eval("@#{parent}_deferred_counts ||= current_user.todos.deferred.group('#{parent}_id').count") + eval("@#{parent}_not_done_counts ||= current_user.todos.active.count_by_group('#{parent}_id')") + eval("@#{parent}_deferred_counts ||= current_user.todos.deferred.count_by_group('#{parent}_id')") end end def init_project_hidden_todo_counts(parents = ['project','context']) parents.each do |parent| - eval("@#{parent}_project_hidden_todo_counts = @#{parent}_project_hidden_todo_counts || current_user.todos.count(:conditions => ['state = ? or state = ?', 'project_hidden', 'active'], :group => :#{parent}_id)") + eval("@#{parent}_project_hidden_todo_counts ||= current_user.todos.active_or_hidden.count_by_group('#{parent}_id')") end end diff --git a/app/models/user.rb b/app/models/user.rb index 0dd35660..26e44856 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -81,7 +81,11 @@ class User < ActiveRecord::Base end has_many :todos, :order => 'todos.completed_at DESC, todos.created_at DESC', - :dependent => :delete_all + :dependent => :delete_all do + def count_by_group(g) + except(:order).group(g).count + end + end has_many :recurring_todos, :order => 'recurring_todos.completed_at DESC, recurring_todos.created_at DESC', :dependent => :delete_all