2016-09-06 88 views
0

我掛鉤到一個現有的數據庫,以便爲管理創建一些簡單的腳手架。他們使用的命名約定是table_id。因此,我需要將缺省主鍵從「id」修改爲「customer_id」,例如。我也希望能夠使用這種改變的鐵軌腳手架,而不必重新佈線。Rails 4 - 重命名主鍵

回答

0

其實你不想這樣做。

ID是數據庫只,Rails中你可以使用外鍵,和這樣說

負荷消費的has_many:XXX 和 XXX belongs_to的:負荷消費

,你給你1 n關係數據庫的含義XXX需要消費者存在。

回答你爲什麼不想改變這種情況,是因爲你的數據庫在改變之後不知道如何行動(如果可能的話),以及如何在沒有ID的情況下搜索新腳手架上的物品?由於ID是負荷消費ID

如果你不知道如何給外鍵

click here

+0

記錄的更新將失敗,如果沒有列「id」引用,但是,對吧?我連接的數據庫的customer_id是主鍵。如果我運行rails更新或銷燬,對於id = 45,它不會找到記錄。 – Atari2600

+0

您可以將collum添加到數據庫中作爲解決方案[請在此處查看](http://guides.rubyonrails.org/active_record_migrations.html#highlighter_783751)。爲了回答你,我完全不知道軌道數據庫是如何工作的,但是我猜想不會,我不會建議你弄亂它。 那麼你會有一個問題發現ID,它會太麻煩(如果可能的話)。你能想象嗎? *東西* find_by(id = costumer_id)如果你搜索別的東西而不是你的客戶?使用相同的ID爲2表代表不同的東西..嗯..有點凌亂 –

+0

示例..可以說,對於每一個客戶,你有產品..你將如何訪問產品編號? products.costumer_id?爲什麼不使用這個costumer_id作爲關鍵?你會如何儲存這些產品?並訂購?或搜索具體信息? costumer_id在您的產品表上不會是完美的順序..也就是說,在您的產品上,它會是(例如)costumer_id 3,然後在第二個產品上它會是costumer_id 1 ..所以您的表不會在爲了找到它需要爲了找到ID 你能想象如果你有1000個產品?並且ID不是1-1000? –