From 01ffe8dbb3a6d9dd221a75650da76a7590767340 Mon Sep 17 00:00:00 2001 From: Daniela Soares Feitosa Date: Thu, 22 Aug 2013 01:14:10 +0000 Subject: [PATCH] Fix: set value to position on custom forms fields --- plugins/custom_forms/db/migrate/20130822001407_set_position_to_existent_custom_forms_plugin_fields.rb | 9 +++++++++ plugins/custom_forms/lib/custom_forms_plugin/field.rb | 6 +++++- plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb | 12 ++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 plugins/custom_forms/db/migrate/20130822001407_set_position_to_existent_custom_forms_plugin_fields.rb diff --git a/plugins/custom_forms/db/migrate/20130822001407_set_position_to_existent_custom_forms_plugin_fields.rb b/plugins/custom_forms/db/migrate/20130822001407_set_position_to_existent_custom_forms_plugin_fields.rb new file mode 100644 index 0000000..232da9e --- /dev/null +++ b/plugins/custom_forms/db/migrate/20130822001407_set_position_to_existent_custom_forms_plugin_fields.rb @@ -0,0 +1,9 @@ +class SetPositionToExistentCustomFormsPluginFields < ActiveRecord::Migration + def self.up + update("UPDATE custom_forms_plugin_fields SET position = 0 WHERE position IS NULL") + end + + def self.down + say("Nothing to undo (cannot recover the data)") + end +end diff --git a/plugins/custom_forms/lib/custom_forms_plugin/field.rb b/plugins/custom_forms/lib/custom_forms_plugin/field.rb index 004f88b..f9b493e 100644 --- a/plugins/custom_forms/lib/custom_forms_plugin/field.rb +++ b/plugins/custom_forms/lib/custom_forms_plugin/field.rb @@ -15,8 +15,12 @@ class CustomFormsPlugin::Field < ActiveRecord::Base before_create do |field| if field.form.fields.exists? - field.position = field.form.fields.order('position').last.position + 1 + field.position = field.form.fields.order(:position).last.position + 1 end end + + def position + self[:position] || 0 + end end diff --git a/plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb b/plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb index 1bf35b8..5c672d1 100644 --- a/plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb +++ b/plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb @@ -81,5 +81,17 @@ class CustomFormsPlugin::FieldTest < ActiveSupport::TestCase assert_equal 1, field_1.position assert_equal 2, field_2.position end + + should 'not crash when adding new fields on a form with fields without position' do + form = CustomFormsPlugin::Form.create(:name => 'Free Software', :profile => fast_create(Profile)) + field_0 = CustomFormsPlugin::Field.create(:name => 'License', :form => form) + field_0.position = nil + field_0.save + + assert_nothing_raised do + field_1 = CustomFormsPlugin::Field.create!(:name => 'URL', :form => form) + end + end + end -- libgit2 0.21.2