From 5366cc6b55a2d00ce99440d11821dde8b5868f94 Mon Sep 17 00:00:00 2001
From: Ryuta Kamizono <kamipo@gmail.com>
Date: Sun, 1 Mar 2015 14:03:31 +0900
Subject: Add `Column#bigint?` method

---
 .../lib/active_record/connection_adapters/abstract_mysql_adapter.rb   | 4 ++--
 activerecord/lib/active_record/connection_adapters/column.rb          | 4 ++++
 .../lib/active_record/connection_adapters/postgresql_adapter.rb       | 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

(limited to 'activerecord/lib')

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 c084431588..9625fcf9b8 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -86,8 +86,8 @@ module ActiveRecord
       def column_spec_for_primary_key(column)
         spec = {}
         if column.auto_increment?
-          return unless column.limit == 8
-          spec[:id] = ':bigint'
+          spec[:id] = ':bigint' if column.bigint?
+          return if spec.empty?
         else
           spec[:id] = column.type.inspect
           spec.merge!(prepare_column_options(column).delete_if { |key, _| [:name, :type, :null].include?(key) })
diff --git a/activerecord/lib/active_record/connection_adapters/column.rb b/activerecord/lib/active_record/connection_adapters/column.rb
index fa5ed07b8a..c05a8aa1ad 100644
--- a/activerecord/lib/active_record/connection_adapters/column.rb
+++ b/activerecord/lib/active_record/connection_adapters/column.rb
@@ -34,6 +34,10 @@ module ActiveRecord
         !default.nil?
       end
 
+      def bigint?
+        /bigint/ === sql_type
+      end
+
       # Returns the human name of the column name.
       #
       # ===== Examples
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
index 6d25b53b21..094a9382ae 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -128,7 +128,7 @@ module ActiveRecord
       def column_spec_for_primary_key(column)
         spec = {}
         if column.serial?
-          return unless column.sql_type == 'bigint'
+          return unless column.bigint?
           spec[:id] = ':bigserial'
         elsif column.type == :uuid
           spec[:id] = ':uuid'
-- 
cgit v1.2.3