aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2014-11-19 19:59:14 +0900
committerRyuta Kamizono <kamipo@gmail.com>2015-01-02 22:30:07 +0900
commitae419af6667125662a4324e8809e2a15aad686d2 (patch)
tree1c409ffe6c52ec65ed13b6a9657cfede3748741f /activerecord/lib/active_record/connection_adapters
parentb63382ec062730699ddda50bf4aeec49cb2f60af (diff)
downloadrails-ae419af6667125662a4324e8809e2a15aad686d2.tar.gz
rails-ae419af6667125662a4324e8809e2a15aad686d2.tar.bz2
rails-ae419af6667125662a4324e8809e2a15aad686d2.zip
Allow precision option for MySQL datetimes.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
index d083e413a5..ac62fb9825 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -591,6 +591,13 @@ module ActiveRecord
when 0x1000000..0xffffffff; 'longtext'
else raise(ActiveRecordError, "No text type has character length #{limit}")
end
+ when 'datetime'
+ return super unless precision
+
+ case precision
+ when 0..6; "datetime(#{precision})"
+ else raise(ActiveRecordError, "No datetime type has precision of #{precision}. The allowed range of precision is from 0 to 6")
+ end
else
super
end
@@ -679,6 +686,11 @@ module ActiveRecord
m.alias_type %r(year)i, 'integer'
m.alias_type %r(bit)i, 'binary'
+ m.register_type(%r(datetime)i) do |sql_type|
+ precision = extract_precision(sql_type)
+ Type::DateTime.new(precision: precision)
+ end
+
m.register_type(%r(enum)i) do |sql_type|
limit = sql_type[/^enum\((.+)\)/i, 1]
.split(',').map{|enum| enum.strip.length - 2}.max