Hãy xem câu trả lời này. Cố gắng execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);"
mà không chỉ định tham số khóa chính trong khối create_table.
Tôi khuyên bạn nên viết quá trình di chuyển của mình như thế này (để bạn có thể khôi phục bình thường):
class CreateShareholders < ActiveRecord::Migration
def up
create_table :shareholders, id: false do |t|
t.integer :uid, limit: 8
t.string :name
t.integer :shares
t.timestamps
end
execute "ALTER TABLE shareholders ADD PRIMARY KEY (uid);"
end
def down
drop_table :shareholders
end
end
CẬP NHẬT: Có một cách tự nhiên (tìm thấy ở đây), nhưng chỉ với kiểu int4:
class CreateShareholders < ActiveRecord::Migration
def change
create_table :shareholders, id: false do |t|
t.primary_key :uid
t.string :name
t.integer :shares
t.timestamps
end
end
end