diff --git a/app/models/theme_field.rb b/app/models/theme_field.rb
index 7620129a005..53d44b8c7a1 100644
--- a/app/models/theme_field.rb
+++ b/app/models/theme_field.rb
@@ -372,7 +372,7 @@ class ThemeField < ActiveRecord::Base
end
end
- after_commit do
+ after_commit on: [:create, :update] do
ensure_baked!
ensure_scss_compiles!
theme.clear_cached_settings!
diff --git a/spec/models/theme_spec.rb b/spec/models/theme_spec.rb
index 17ba4f91271..a799ac0306b 100644
--- a/spec/models/theme_spec.rb
+++ b/spec/models/theme_spec.rb
@@ -127,6 +127,25 @@ HTML
expect(field.javascript_cache.content).to include('raw-handlebars')
end
+ it 'can destroy unbaked theme without errors' do
+ with_template = <
+ {{hello}}
+
+
+HTML
+ theme.set_field(target: :common, name: "header", value: with_template)
+ theme.save!
+
+ field = theme.theme_fields.find_by(target_id: Theme.targets[:common], name: 'header')
+ baked = Theme.lookup_field(theme.id, :mobile, "header")
+ ThemeField.where(id: field.id).update_all(compiler_version: 0) # update_all to avoid callbacks
+
+ field.reload.destroy!
+ end
+
it 'should create body_tag_baked on demand if needed' do
theme.set_field(target: :common, name: :body_tag, value: "test")
theme.save