我想User
在Ruby on Rails应用程序中创建一个模型.
我使用以下命令:
rails generate model User email:string name:string role:string
可以email
使用此命令定义主键吗?或者我必须修改使用此命令创建的数据库迁移文件?如何?
不,你不能.默认情况下,主键是自动增量整数.
但是,您可以打开从命令生成的迁移,并更改它(在运行rake db:migrate
命令之前).迁移可能会有一个create_table
命令:
class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| # ... end end end
如果您阅读create_table
文档,您会发现可以通过两个选项.具体来说,您需要设置:id
为false
不生成id
字段,并且您需要指定主键字段的名称.
create_table :users, id: false, primary_key: :email do |t|
要添加@Simone Carletti
回答,您可能需要使用execute
设置primary key
(如果它是模糊的).如果您正在修改现有的表格,尤其如此,您显然没有这样做:
class CreateUsers < ActiveRecord::Migration def change create_table :users, id: false do |t| t.string :email, null: false t.timestamps end execute "ALTER TABLE users ADD PRIMARY KEY (email);" end end
我们uuid
在一些应用程序中使用了这些,这就是我们必须做的事情(primary_key: :uuid
不起作用)......