Jep*_*sen 6 model ruby-on-rails primary-key rails-activerecord
我想User在Ruby on Rails应用程序中创建一个模型.
我使用以下命令:
rails generate model User email:string name:string role:string
Run Code Online (Sandbox Code Playgroud)
可以email使用此命令定义主键吗?或者我必须修改使用此命令创建的数据库迁移文件?如何?
不,你不能.默认情况下,主键是自动增量整数.
但是,您可以打开从命令生成的迁移,并更改它(在运行rake db:migrate命令之前).迁移可能会有一个create_table命令:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
# ...
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果您阅读create_table文档,您会发现可以通过两个选项.具体来说,您需要设置:id为false不生成id字段,并且您需要指定主键字段的名称.
create_table :users, id: false, primary_key: :email do |t|
Run Code Online (Sandbox Code Playgroud)
要添加@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
Run Code Online (Sandbox Code Playgroud)
我们uuid在一些应用程序中使用了这些,这就是我们必须做的事情(primary_key: :uuid不起作用)......
| 归档时间: |
|
| 查看次数: |
5466 次 |
| 最近记录: |