我現在開始在Rails上,我在論壇上看了一下,但是我沒有找到任何可以解決我的問題的東西。在Rails上創建表時需要創建一個外鍵?
在這裏,我有一個分類表,它只有一個列的名稱(沒有重複類別),所以我想要名稱爲主鍵,然後我有一個產品表具有名稱,main_photo,描述,我想說,一個產品只有一個類別,我是否需要添加一個名爲category的列作爲產品的外鍵?
類別被認爲有許多產品。
然後在類別模型中,我該如何說名稱是主鍵,以及如何才能在產品中的類別和類別之間建立主鍵名稱之間的對應關係?
我現在開始在Rails上,我在論壇上看了一下,但是我沒有找到任何可以解決我的問題的東西。在Rails上創建表時需要創建一個外鍵?
在這裏,我有一個分類表,它只有一個列的名稱(沒有重複類別),所以我想要名稱爲主鍵,然後我有一個產品表具有名稱,main_photo,描述,我想說,一個產品只有一個類別,我是否需要添加一個名爲category的列作爲產品的外鍵?
類別被認爲有許多產品。
然後在類別模型中,我該如何說名稱是主鍵,以及如何才能在產品中的類別和類別之間建立主鍵名稱之間的對應關係?
活動記錄中的外鍵約束並不經常使用,因爲活動記錄背後的意識形態認爲這種邏輯應該屬於模型而不屬於數據庫 - 數據庫只是一個啞存儲:http://guides.rubyonrails.org/migrations.html#active-record-and-referential-integrity。
Rails的方式是在包括您的Categories表在內的所有表上都有一個ID列,並且在Products表中有一個名爲Category_ID的列。注意表名是複數。
然後在您的模型中定義實體產品和類別之間的關係。閱讀文章A Guide to Active Record Associations,它會回答你所有的問題,特別是第2.1,2.2和3.3節。
有很多有效的理由在你的數據庫中有外鍵。請參閱Does Rails need database-level constraints?
如果您想輕鬆地將外鍵添加到您的Rails應用程序,我建議您使用Foreigner。
但是當我做鐵軌生成腳手架類別名稱:字符串,不是它默認創建一個ID列?我的表格會有一個ID和一個名稱列.. –
是的,它應該爲每個表添加一個ID列。但它不會將Category_ID列添加到Products表中,您必須手動執行此操作。 – link664
通過我在我的回答中發佈的鏈接,您的問題的所有答案都在那裏。 – link664