From ba8a3400ec5a4ef1771a1f7ea26f5a37185eadec Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Wed, 4 Jun 2008 16:50:19 -0700 Subject: [PATCH] Added ability to change a deliverables type --- app/controllers/deliverables_controller.rb | 5 ++++- app/models/deliverable.rb | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/controllers/deliverables_controller.rb b/app/controllers/deliverables_controller.rb index 9eb637b..8bc22ac 100644 --- a/app/controllers/deliverables_controller.rb +++ b/app/controllers/deliverables_controller.rb @@ -63,9 +63,12 @@ class DeliverablesController < ApplicationController end def update - # TODO: Handle type change @deliverable = Deliverable.find(params[:deliverable_id]) + if params[:deliverable][:type] != @deliverable.class + @deliverable = @deliverable.change_type(params[:deliverable][:type]) + end + respond_to do |format| if @deliverable.update_attributes(params[:deliverable]) @flash = l(:notice_successful_create) diff --git a/app/models/deliverable.rb b/app/models/deliverable.rb index 36db0e7..b502b42 100644 --- a/app/models/deliverable.rb +++ b/app/models/deliverable.rb @@ -15,6 +15,16 @@ class Deliverable < ActiveRecord::Base return version.fixed_issues.size end + + def change_type(to) + if [FixedDeliverable.name, HourlyDeliverable.name].include?(to) + self.type = to + self.save! + return Deliverable.find(self.id) + else + return self + end + end def score return self.progress - self.budget_ratio