Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
513 views
in Technique[技术] by (71.8m points)

ruby on rails - Specify custom primary key in migration

I have a data structure:

  t.integer :userID
  t.string :apikey
  t.integer :characterID

The userID should be the primary key (name is not important, it can default to :id). However, I don't want it to be auto incrementing or anything else, just take the value provided and write it into the database.

How do I have to adjust the migration and the model to achieve what I want?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
 create_table(:my_table, :primary_key => 'userID') do |t|
   # Primary key column will be created automatically
   # Do not create here
   # t.column :userID, :integer, :null => false
   ...
 end

Or

create_table :my_table, {:id => false} do |t|
  t.integer :userID
  t.string :apikey
  t.integer :characterID
  t.timestamps
 end
 execute "ALTER TABLE my_table ADD PRIMARY KEY (userID);"

And don't forget to put this line somewhere in model:

 set_primary_key :userID

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...