diff --git a/app/controllers/admin/site_settings_controller.rb b/app/controllers/admin/site_settings_controller.rb index bc550ba103b..4d662f7dd50 100644 --- a/app/controllers/admin/site_settings_controller.rb +++ b/app/controllers/admin/site_settings_controller.rb @@ -37,12 +37,10 @@ class Admin::SiteSettingsController < Admin::AdminController new_value = UserOption.title_count_modes[new_value.to_sym] end - UserOption.where(user_option => previous_value).update_all(user_option => new_value) + attrs = { user_option => new_value } + attrs[:email_digests] = (new_value.to_i != 0) if id == "default_email_digest_frequency" - if id == "default_email_digest_frequency" - disable_digests = new_value == 0 - UserOption.where(user_option => 0, email_digests: !disable_digests).update_all(email_digests: disable_digests) - end + UserOption.where(user_option => previous_value).update_all(attrs) elsif id.start_with?("default_categories_") previous_category_ids = previous_value.split("|") new_category_ids = new_value.split("|") diff --git a/spec/requests/admin/site_settings_controller_spec.rb b/spec/requests/admin/site_settings_controller_spec.rb index 9e21a2d37e2..5dc564e7010 100644 --- a/spec/requests/admin/site_settings_controller_spec.rb +++ b/spec/requests/admin/site_settings_controller_spec.rb @@ -77,7 +77,16 @@ describe Admin::SiteSettingsController do }.to change { UserOption.where(email_in_reply_to: false).count }.by(0) end - it 'should disable email digests in existing user options' do + it 'should update `email_digests` column in existing user options' do + UserOption.last.update(email_digests: false) + + expect { + put "/admin/site_settings/default_email_digest_frequency.json", params: { + default_email_digest_frequency: 30, + updateExistingUsers: true + } + }.to change { UserOption.where(email_digests: true).count }.by(1) + expect { put "/admin/site_settings/default_email_digest_frequency.json", params: { default_email_digest_frequency: 0,