diff --git a/app/models/person.rb b/app/models/person.rb index e6e37b8..888a883 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -282,7 +282,7 @@ roles] } end after_update do |person| - person.user.save! + person.user.save! unless person.user.changes.blank? end def is_admin?(environment = nil) diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb index 21d23b8..17473fb 100644 --- a/test/functional/search_controller_test.rb +++ b/test/functional/search_controller_test.rb @@ -30,6 +30,7 @@ class SearchControllerTest < ActionController::TestCase # By pass user validation on person creation user = mock() user.stubs(:id).returns(1) + user.stubs(:changes).returns(nil) user.stubs(:valid?).returns(true) user.stubs(:email).returns('some@test.com') user.stubs(:save!).returns(true) diff --git a/test/unit/person_test.rb b/test/unit/person_test.rb index a2cb697..6cae3fa 100644 --- a/test/unit/person_test.rb +++ b/test/unit/person_test.rb @@ -1767,4 +1767,11 @@ class PersonTest < ActiveSupport::TestCase assert person.voted_against?(article) end + should 'not save user after an update on person and user is not touched' do + user = create_user('testuser') + person = user.person + person.user.expects(:save!).never + person.save! + end + end -- libgit2 0.21.2