diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2015-05-03 20:50:21 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2016-01-13 22:03:56 +0900 |
commit | 4b1188b5abc66a42980e7708f78a54177b31c300 (patch) | |
tree | 1337ab998026dee161014005bc3679d767365217 /activerecord | |
parent | 5fd30ac52d9f8fcdba98b92cdb82868f6686596c (diff) | |
download | rails-4b1188b5abc66a42980e7708f78a54177b31c300.tar.gz rails-4b1188b5abc66a42980e7708f78a54177b31c300.tar.bz2 rails-4b1188b5abc66a42980e7708f78a54177b31c300.zip |
Fix extract default with CURRENT_DATE
The default 'now'::date is CURRENT_DATE.
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index e313a34c3a..42ba8d384c 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -512,8 +512,13 @@ module ActiveRecord def extract_value_from_default(default) # :nodoc: case default # Quoted types - when /\A[\(B]?'(.*)'::/m - $1.gsub("''".freeze, "'".freeze) + when /\A[\(B]?'(.*)'.*::"?([\w. ]+)"?(?:\[\])?\z/m + # The default 'now'::date is CURRENT_DATE + if $1 == "now".freeze && $2 == "date".freeze + nil + else + $1.gsub("''".freeze, "'".freeze) + end # Boolean types when 'true'.freeze, 'false'.freeze default @@ -535,7 +540,7 @@ module ActiveRecord end def has_default_function?(default_value, default) # :nodoc: - !default_value && (%r{\w+\(.*\)} === default) + !default_value && (%r{\w+\(.*\)|\(.*\)::\w+} === default) end def load_additional_types(type_map, oids = nil) # :nodoc: |