在迁移中指定自定义主键
我有一个数据结构:
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它。