1
我有一個使用Devise的用戶模型,我正在爲它創建一個Profile模型。Rails:我可以使用外鍵作爲一對一關係中的主鍵嗎?
class User < ApplicationRecord
has_one :profile
end
class Profile < ApplicationRecord
belongs_to :user
end
由於每個用戶將只有一個資料,我認爲,這將大大地通過使用一個current_user.id
資料存取數據簡化的東西。因此,我正在考慮跳過創建常規主鍵列,並將我的個人檔案表中的外鍵設置爲我的主鍵。
這是我使用的遷移:
class CreateProfiles < ActiveRecord::Migration[5.0]
def change
create_table :profiles, {id: false} do |t|
t.references :user, foreign_key: true, primary_key: true
end
end
end
我發現an old thread elsewhere這表明,這打破Rails約定,但我看不出有什麼缺點了這一點。有什麼我沒有看到的,將來可能會炸燬我嗎?
爲什麼你想這樣做,跳過正常主鍵的創建是否有任何好處? – Iceman
由於這是一對一的關係,因此我認爲能夠使用'current_user.id'中的值訪問User和Profile並將Profile數據保存在單獨的模型中會更容易。 – Valentine