<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -50,4 +50,8 @@ class ActiveForm &lt; ActiveRecord::Base
     callback(:after_save) if result = valid?
     result
   end
+  
+  def save! # :nodoc:
+    save or raise ActiveRecord::RecordInvalid.new(self)
+  end
 end</diff>
      <filename>lib/active_form.rb</filename>
    </modified>
    <modified>
      <diff>@@ -102,4 +102,27 @@ class ActiveFormTest &lt; Test::Unit::TestCase
     assert obj.before_save_called
     assert !obj.after_save_called
   end
+
+  def test_create_bang_raises_no_exception_on_valid
+    self.class.class_eval %q{
+      class CreateBangSuccess &lt; ActiveForm; end
+    }
+    
+    assert_nothing_raised do
+      CreateBangSuccess.create!
+    end
+  end
+
+  def test_create_bang_raises_exception_on_invalid
+    self.class.class_eval %q{
+      class CreateBangFailure &lt; ActiveForm
+        column :required_field
+        validates_presence_of :required_field
+      end
+    }
+    
+    assert_raises ActiveRecord::RecordInvalid do
+      CreateBangFailure.create!
+    end
+  end
 end</diff>
      <filename>test/active_form_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>9d24b9a83428ba43291c3b62ced4571f6abb967f</id>
    </parent>
  </parents>
  <author>
    <name>Remco van 't Veer</name>
    <email>rwvtveer@xs4all.nl</email>
  </author>
  <url>http://github.com/remvee/active_form/commit/44de309bd667b7714c5bbf0863be9acc2b75277e</url>
  <id>44de309bd667b7714c5bbf0863be9acc2b75277e</id>
  <committed-date>2009-08-27T08:15:51-07:00</committed-date>
  <authored-date>2009-08-27T08:15:51-07:00</authored-date>
  <message>support save! and create!</message>
  <tree>3de9b66ec0e802effb675b221857061e771e35f9</tree>
  <committer>
    <name>Remco van 't Veer</name>
    <email>rwvtveer@xs4all.nl</email>
  </committer>
</commit>
