Rails迁移,更改:id列类型

时间:2013-03-08 20:59:50

标签: ruby-on-rails ruby-on-rails-3.2 rails-migrations

如何使用:idauto_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

1 个答案:

答案 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"

请记住在保存初始化程序后重新启动服务器。

相关问题