以字符串字段作为主键生成模型

问题描述 投票:6回答:3

我想在Ruby on Rails应用程序中创建一个User模型。

我使用以下命令:

rails generate model User email:string name:string role:string

是否可以通过此命令将email定义为主键?还是必须修改使用此命令创建的数据库迁移文件?以及如何?

ruby-on-rails model rails-activerecord primary-key
3个回答
9
投票

不,你不能。默认情况下,主键是一个自动递增的整数。

但是,您可以打开从命令生成的迁移,并进行更改(在运行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

5
投票

要添加到 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



0
投票

在Migration 6.0或Rails 6中]

enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.