我想在我的Ruby on Rails應用程序中創建User
模型。以字符串字段爲主鍵生成模型
我使用下面的命令:
rails generate model User email:string name:string role:string
,能夠定義與此命令的email
作爲主鍵?或者我必須修改使用此命令創建的數據庫遷移文件?如何?
我想在我的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
文檔,你會發現,你可以通過兩個選項。具體而言,您需要將: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
沒「T工作)...
好非常感謝您的答覆。然後,我將更改遷移文件。 – Jepessen