FIX: Allow unbaked theme fields to be destroyed

FIX: Allow unbaked theme fields to be destroyed

The after_commit hook was attempting to re-bake theme_fields after they were destroyed, which caused an exception to be thrown

diff --git a/app/models/theme_field.rb b/app/models/theme_field.rb
index 7620129..53d44b8 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 17ba4f9..a799ac0 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 = <<HTML
+    <script type='text/x-handlebars' name='template'>
+      {{hello}}
+    </script>
+    <script type='text/x-handlebars' data-template-name='raw_template.raw'>
+      {{hello}}
+    </script>
+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: "<b>test")
     theme.save

GitHub sha: 91f0468f