diff --git a/app/controllers/deliverables_controller.rb b/app/controllers/deliverables_controller.rb index 0aea42a..cf1e408 100644 --- a/app/controllers/deliverables_controller.rb +++ b/app/controllers/deliverables_controller.rb @@ -14,7 +14,7 @@ class DeliverablesController < InheritedResources::Base def create @deliverable = begin_of_association_chain.deliverables.build(params[:deliverable]) - if params[:deliverable] && params[:deliverable][:type] && ['FixedDeliverable','HourlyDeliverable','RetainerDeliverable'].include?(params[:deliverable][:type]) + if params[:deliverable] && params[:deliverable][:type] && Deliverable.valid_types.include?(params[:deliverable][:type]) @deliverable.type = params[:deliverable][:type] end create! { contract_url(@project, @contract) } diff --git a/app/models/deliverable.rb b/app/models/deliverable.rb index 2915edc..541dea7 100644 --- a/app/models/deliverable.rb +++ b/app/models/deliverable.rb @@ -72,6 +72,17 @@ class Deliverable < ActiveRecord::Base type == "RetainerDeliverable" end + def self.valid_types + ['FixedDeliverable','HourlyDeliverable','RetainerDeliverable'] + end + + def self.valid_types_to_select + valid_types.inject([]) do |types, type| + types << [type.gsub(/Deliverable/i,''), type] + types + end + end + if Rails.env.test? generator_for :title, :method => :next_title diff --git a/app/views/deliverables/_form.html.erb b/app/views/deliverables/_form.html.erb index 22f015d..a9cb9a2 100644 --- a/app/views/deliverables/_form.html.erb +++ b/app/views/deliverables/_form.html.erb @@ -4,7 +4,7 @@ <% if resource.new_record? %>
  • <%= form.label(:type, l(:field_type)) %> - <%= form.select(:type, [["Fixed", "FixedDeliverable"], ["Hourly", "HourlyDeliverable"], ["Retainer", "RetainerDeliverable"]], {:include_blank => false}, {:class => 'type'}) %> + <%= form.select(:type, Deliverable.valid_types_to_select, {:include_blank => false}, {:class => 'type'}) %> <%= form.select(:frequency, RetainerDeliverable.frequencies_to_select, :include_blank => false) %>