aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2015-05-03 20:50:21 +0900
committerRyuta Kamizono <kamipo@gmail.com>2016-01-13 22:03:56 +0900
commit4b1188b5abc66a42980e7708f78a54177b31c300 (patch)
tree1337ab998026dee161014005bc3679d767365217 /activerecord/lib
parent5fd30ac52d9f8fcdba98b92cdb82868f6686596c (diff)
downloadrails-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/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb11
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: