diff --git a/config/initializers/10-patches.rb b/config/initializers/10-patches.rb
index 5d19a6fc0e17ceaf9f275e567645a547e7a974ac..f4ae06cd633d4a3bce560979ff727dbc281a59d8 100644
--- a/config/initializers/10-patches.rb
+++ b/config/initializers/10-patches.rb
@@ -12,6 +12,36 @@ module ActiveRecord
   end
 end
 
+module ActiveRecord
+  class Errors
+    def full_messages(options = {})
+      full_messages = []
+
+      @errors.each_key do |attr|
+        @errors[attr].each do |message|
+          next unless message
+
+          if attr == "base"
+            full_messages << message
+          elsif attr == "custom_values"
+            # Replace the generic "custom values is invalid"
+            # with the errors on custom values
+            @base.custom_values.each do |value|
+              value.errors.each do |attr, msg|
+                full_messages << value.custom_field.name + ' ' + msg
+              end
+            end
+          else
+            attr_name = @base.class.human_attribute_name(attr)
+            full_messages << attr_name + ' ' + message
+          end
+        end
+      end
+      full_messages
+    end
+  end
+end
+
 module ActionView
   module Helpers
     module DateHelper
diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb
index 7013d2c0d401f1fc6eb9cec7497e452c5650cccb..365316034a3daf47a8942bfd6b524844d8c54efd 100644
--- a/test/unit/issue_test.rb
+++ b/test/unit/issue_test.rb
@@ -63,6 +63,19 @@ class IssueTest < Test::Unit::TestCase
     assert_equal 'PostgreSQL', issue.custom_value_for(field).value
   end
   
+  def test_errors_full_messages_should_include_custom_fields_errors
+    field = IssueCustomField.find_by_name('Database')
+    
+    issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 1, :status_id => 1, :subject => 'test_create', :description => 'IssueTest#test_create_with_required_custom_field')
+    assert issue.available_custom_fields.include?(field)
+    # Invalid value
+    issue.custom_field_values = { field.id => 'SQLServer' }
+    
+    assert !issue.valid?
+    assert_equal 1, issue.errors.full_messages.size
+    assert_equal "Database #{I18n.translate('activerecord.errors.messages.inclusion')}", issue.errors.full_messages.first
+  end
+  
   def test_update_issue_with_required_custom_field
     field = IssueCustomField.find_by_name('Database')
     field.update_attribute(:is_required, true)