diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb --- a/app/controllers/contests_controller.rb +++ b/app/controllers/contests_controller.rb @@ -17,6 +17,14 @@ end end + def clear_stat + user = User.find(params[:id]) + if user.contest_stat!=nil + user.contest_stat.destroy + end + redirect_to :action => 'user_stat' + end + def clear_all_stat if not Configuration.indv_contest_mode? redirect_to :action => 'index' and return diff --git a/app/controllers/login_controller.rb b/app/controllers/login_controller.rb --- a/app/controllers/login_controller.rb +++ b/app/controllers/login_controller.rb @@ -10,7 +10,6 @@ if user = User.authenticate(params[:login], params[:password]) session[:user_id] = user.id session[:admin] = user.admin? - UserContestStat.update_user_start_time(user) redirect_to :controller => 'main', :action => 'list' else flash[:notice] = 'Wrong password' diff --git a/app/controllers/main_controller.rb b/app/controllers/main_controller.rb --- a/app/controllers/main_controller.rb +++ b/app/controllers/main_controller.rb @@ -3,6 +3,8 @@ before_filter :authenticate, :except => [:index, :login] before_filter :check_viewability, :except => [:index, :login] + append_before_filter :update_user_start_time, :except => [:index, :login] + # COMMENTED OUT: filter in each action instead # before_filter :verify_time_limit, :only => [:submit] @@ -319,5 +321,10 @@ } end + def update_user_start_time + user = User.find(session[:user_id]) + UserContestStat.update_user_start_time(user) + end + end diff --git a/app/models/user.rb b/app/models/user.rb --- a/app/models/user.rb +++ b/app/models/user.rb @@ -16,7 +16,7 @@ :foreign_key => "receiver_id", :order => 'created_at DESC' - has_one :contest_stat, :class_name => "UserContestStat" + has_one :contest_stat, :class_name => "UserContestStat", :dependent => :destroy belongs_to :site belongs_to :country