diff --git a/activesupport/lib/active_support/ordered_hash.rb b/activesupport/lib/active_support/ordered_hash.rb
index <HASH>..<HASH> 100644
--- a/activesupport/lib/active_support/ordered_hash.rb
+++ b/activesupport/lib/active_support/ordered_hash.rb
@@ -149,6 +149,8 @@ module ActiveSupport
         self
       end
 
+      alias_method :update, :merge!
+
       def merge(other_hash, &block)
         dup.merge!(other_hash, &block)
       end
diff --git a/activesupport/test/ordered_hash_test.rb b/activesupport/test/ordered_hash_test.rb
index <HASH>..<HASH> 100644
--- a/activesupport/test/ordered_hash_test.rb
+++ b/activesupport/test/ordered_hash_test.rb
@@ -244,4 +244,10 @@ class OrderedHashTest < Test::Unit::TestCase
     assert_equal @ordered_hash.keys,   @deserialized_ordered_hash.keys
     assert_equal @ordered_hash.values, @deserialized_ordered_hash.values
   end
+
+  def test_update_sets_keys
+    @updated_ordered_hash = ActiveSupport::OrderedHash.new
+    @updated_ordered_hash.update(:name => "Bob")
+    assert_equal [:name],  @updated_ordered_hash.keys
+  end
 end
Alias ActiveSupport::OrderedHash#update to ActiveSupport::OrderedHash.merge!

This ensures that an OrderedHash's keys are set up appropriately when using update.

[#<I> state:committed]