summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/plugins/acts_as_customizable/lib/acts_as_customizable.rb8
-rw-r--r--test/unit/issue_test.rb15
2 files changed, 23 insertions, 0 deletions
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)