在迁移中指定自定义主键

我有一个数据结构:

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

userID应该是主键(名称不重要,它可以默认为:id )。 但是,我不希望它是自动递增或其他任何东西,只需获取提供的值并将其写入数据库。

我如何调整迁移和模型以实现我想要的?

  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 

要么

 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);" 

并且不要忘记将此行放在模型中的某个位置:

  set_primary_key :userID 

我没有绕过ActiveRecord模型,而是将userID作为普通列并使用

 validates_uniqueness_of :userID, :message => "userID needs to be unique" 

在模型上validation它。