diff options
author | Yves Senn <yves.senn@gmail.com> | 2013-06-19 09:11:07 -0700 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2013-06-19 09:11:07 -0700 |
commit | 12e18178357b537223535fdc94c433d53b9e1fe0 (patch) | |
tree | efc8e080dc71b8774ec215d69887790227b41469 /activerecord | |
parent | 0b502cb87906505e519b404ef2cd1d607c89a44a (diff) | |
parent | 78f6268977d80f3e6dcb916dd185ef046caf8586 (diff) | |
download | rails-12e18178357b537223535fdc94c433d53b9e1fe0.tar.gz rails-12e18178357b537223535fdc94c433d53b9e1fe0.tar.bz2 rails-12e18178357b537223535fdc94c433d53b9e1fe0.zip |
Merge pull request #10884 from dmarkow/pg_fix_default_quotes
Handle single quotes in PostgreSQL default column values
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/defaults_test.rb | 25 |
2 files changed, 26 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index d5a603cadc..98126249df 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -84,7 +84,7 @@ module ActiveRecord $1 # Character types when /\A\(?'(.*)'::.*\b(?:character varying|bpchar|text)\z/m - $1 + $1.gsub(/''/, "'") # Binary data types when /\A'(.*)'::bytea\z/m $1 diff --git a/activerecord/test/cases/defaults_test.rb b/activerecord/test/cases/defaults_test.rb index e0cf4adf13..7e3d91e08c 100644 --- a/activerecord/test/cases/defaults_test.rb +++ b/activerecord/test/cases/defaults_test.rb @@ -39,6 +39,31 @@ class DefaultTest < ActiveRecord::TestCase end end +class DefaultStringsTest < ActiveRecord::TestCase + class DefaultString < ActiveRecord::Base; end + + setup do + @connection = ActiveRecord::Base.connection + @connection.create_table :default_strings do |t| + t.string :string_col, default: "Smith" + t.string :string_col_with_quotes, default: "O'Connor" + end + DefaultString.reset_column_information + end + + def test_default_strings + assert_equal "Smith", DefaultString.new.string_col + end + + def test_default_strings_containing_single_quotes + assert_equal "O'Connor", DefaultString.new.string_col_with_quotes + end + + teardown do + @connection.drop_table :default_strings + end +end + if current_adapter?(:MysqlAdapter, :Mysql2Adapter) class DefaultsTestWithoutTransactionalFixtures < ActiveRecord::TestCase # ActiveRecord::Base#create! (and #save and other related methods) will |