From 564e32b71dfdf9b39ed243b25d9a3f090294ce9d Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Sat, 19 May 2012 11:46:13 -0700 Subject: Merge pull request #6397 from kennyj/fix_translate_exception Fix a problem of translate_exception method in a Japanese (non English) environment. --- .../active_record/connection_adapters/postgresql_adapter.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'activerecord/lib') diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index afc363c9b2..08ef704752 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -1142,11 +1142,15 @@ module ActiveRecord @connection.server_version end + # See http://www.postgresql.org/docs/9.1/static/errcodes-appendix.html + FOREIGN_KEY_VIOLATION = "23503" + UNIQUE_VIOLATION = "23505" + def translate_exception(exception, message) - case exception.message - when /duplicate key value violates unique constraint/ + case exception.result.error_field(PGresult::PG_DIAG_SQLSTATE) + when UNIQUE_VIOLATION RecordNotUnique.new(message, exception) - when /violates foreign key constraint/ + when FOREIGN_KEY_VIOLATION InvalidForeignKey.new(message, exception) else super -- cgit v1.2.3