diff --git a/app/models/issue.rb b/app/models/issue.rb index ea18e03..5fe0d05 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -870,10 +870,13 @@ class Issue < ActiveRecord::Base if @current_journal # attributes changes (Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c| + before = @issue_before_change.send(c) + after = send(c) + next if before == after || (before.blank? && after.blank?) @current_journal.details << JournalDetail.new(:property => 'attr', :prop_key => c, :old_value => @issue_before_change.send(c), - :value => send(c)) unless send(c)==@issue_before_change.send(c) + :value => send(c)) } # custom fields changes custom_values.each {|c| diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index eee84ce..92f604e 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -733,6 +733,22 @@ class IssueTest < ActiveSupport::TestCase assert_equal old_description, detail.old_value assert_equal new_description, detail.value end + + def test_blank_descriptions_should_not_be_journalized + IssueCustomField.delete_all + Issue.update_all("description = NULL", "id=1") + + i = Issue.first + i.init_journal(User.find(2)) + i.subject = "blank description" + i.description = "\r\n" + + assert_difference 'Journal.count', 1 do + assert_difference 'JournalDetail.count', 1 do + i.save! + end + end + end def test_saving_twice_should_not_duplicate_journal_details i = Issue.find(:first)