自定义主键我有一个数据结构:指定迁移
t.integer :userID
t.string :apikey
t.integer :characterID
的用户ID应该是主键(名字并不重要,它可以默认为:id
)。但是,我不希望它是自动递增或其他任何东西,只需要提供的值并将其写入数据库。
如何调整迁移和模型以实现我想要的?
自定义主键我有一个数据结构:指定迁移
t.integer :userID
t.string :apikey
t.integer :characterID
的用户ID应该是主键(名字并不重要,它可以默认为: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"
对模型进行验证。
你添加了一个索引吗?如果您要使用必需的'userId'进行搜索。 – nathanvda
在你的第一个例子中,它不应该是':integer'吗? 'userID'仍然是一个'integer',而不是varchar。 – Femaref
@Femaref yaa ..我很抱歉..答案更新.. –
可能不需要一个范围。谢谢。 – Femaref