我想在Ruby on Rails应用程序中创建一个User
模型。
我使用以下命令:
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
文档,您会注意到可以传递两个选项。具体来说,您需要将create_table
设置为:id
以不生成false
字段,并且需要指定主键字段的名称。
id
要添加到 create_table :users, id: false, primary_key: :email do |t|
的答案中,您may需要使用@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