如何使用:id
和auto_increment
:limit => 8
列作为主键
def change
create_table :companies, :id => false do |t|
t.integer :id, :limit => 8
t.string :name
t.timestamps
end
end
此代码未将:id
列作为主键,并且不会为自动增量创建序列。
PostgreSQL 8.4,Rails 3.2.11
答案 0 :(得分:1)
在迁移中更改列的长度或数据类型将使列无效为主键。相反,创建覆盖站点的默认主键数据类型的初始化程序应该提供您要实现的行为:
# config/initializers/change_primary_key_datatype.rb
require 'active_record/connection_adapters/postgresql_adapter'
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:primary_key] = "bigserial primary key"
请记住在保存初始化程序后重新启动服务器。