Permalink
Browse files

Merge pull request #10455 from patricksrobertson/bigserial_id_not_ide…

…ntifying_pk

Add PK constraint on bigserial ID columns on postgres adapter
  • Loading branch information...
tenderlove committed May 7, 2013
2 parents ca0275d + 0e00c6b commit 3043d45eefc3776d5f3a9e7d212a01f99d869ef8
@@ -359,8 +359,12 @@ class TableDefinition < ActiveRecord::ConnectionAdapters::TableDefinition
# a record (as primary keys cannot be +nil+). This might be done via the
# +SecureRandom.uuid+ method and a +before_save+ callback, for instance.
def primary_key(name, type = :primary_key, options = {})
- return super unless type == :uuid
- options[:default] = options.fetch(:default, 'uuid_generate_v4()')
+ return super unless type = :primary_key
+
+ if type == :uuid
+ options[:default] = options.fetch(:default, 'uuid_generate_v4()')
+ end
+
options[:primary_key] = true
column name, type, options
end
@@ -216,3 +216,32 @@ def test_primaery_key_method_with_ansi_quotes
end
end
+if current_adapter?(:PostgreSQLAdapter)
+ class PrimaryKeyBigSerialTest < ActiveRecord::TestCase
+ self.use_transactional_fixtures = false
+
+ class Widget < ActiveRecord::Base
+ end
+
+ def setup
+ @con = ActiveRecord::Base.connection
+
+ ActiveRecord::Schema.define do
+ create_table :widgets, id: :bigserial do |t|
+ end
+ end
+ end
+
+ def teardown
+ ActiveRecord::Schema.define do
+ drop_table :widgets
+ end
+ end
+
+ def test_bigserial_primary_key
+ widget = Widget.create!
+
+ assert_not_nil widget.id
+ end
+ end
+end

0 comments on commit 3043d45

Please sign in to comment.