From 514f2d6c0fa6e1eb8e1f7f1a1dbb733dc81776dd Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Mon, 11 Feb 2013 17:38:30 +0000 Subject: [PATCH] Fixed that custom_field_values are not reloaded on #reload (#13119). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11349 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- .../lib/acts_as_customizable.rb | 8 ++++++++ test/unit/issue_test.rb | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/lib/plugins/acts_as_customizable/lib/acts_as_customizable.rb b/lib/plugins/acts_as_customizable/lib/acts_as_customizable.rb index e896d921c..28cefd4ef 100644 --- a/lib/plugins/acts_as_customizable/lib/acts_as_customizable.rb +++ b/lib/plugins/acts_as_customizable/lib/acts_as_customizable.rb @@ -32,6 +32,8 @@ module Redmine :order => "#{CustomField.table_name}.position", :dependent => :delete_all, :validate => false + + send :alias_method, :reload_without_custom_fields, :reload send :include, Redmine::Acts::Customizable::InstanceMethods validate :validate_custom_field_values after_save :save_custom_field_values @@ -152,6 +154,12 @@ module Redmine @custom_field_values_changed = true end + def reload(*args) + @custom_field_values = nil + @custom_field_values_changed = false + reload_without_custom_fields(*args) + end + module ClassMethods end end diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index ad283e64a..1ffc24dd5 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -421,6 +421,21 @@ class IssueTest < ActiveSupport::TestCase assert_equal 'MySQL', issue.custom_field_value(1) end + def test_reload_should_reload_custom_field_values + issue = Issue.generate! + issue.custom_field_values = {'2' => 'Foo'} + issue.save! + + issue = Issue.order('id desc').first + assert_equal 'Foo', issue.custom_field_value(2) + + issue.custom_field_values = {'2' => 'Bar'} + assert_equal 'Bar', issue.custom_field_value(2) + + issue.reload + assert_equal 'Foo', issue.custom_field_value(2) + end + def test_should_update_issue_with_disabled_tracker p = Project.find(1) issue = Issue.find(1)