当前位置:  开发笔记 > 后端 > 正文

生成一个以字符串字段为主键的模型

如何解决《生成一个以字符串字段为主键的模型》经验,为你挑选了2个好方法。

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

我使用以下命令:

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

可以email使用此命令定义主键吗?或者我必须修改使用此命令创建的数据库迁移文件?如何?



1> Simone Carle..:

不,你不能.默认情况下,主键是自动增量整数.

但是,您可以打开从命令生成的迁移,并更改它(在运行rake db:migrate命令之前).迁移可能会有一个create_table命令:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      # ...
    end
  end
end

如果您阅读create_table文档,您会发现可以通过两个选项.具体来说,您需要设置:idfalse不生成id字段,并且您需要指定主键字段的名称.

    create_table :users, id: false, primary_key: :email do |t|



2> Richard Peck..:

要添加@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不起作用)......

在此输入图像描述


推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有