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