我有一個名爲product_categories的表。我想創造一種自我關係。使用遷移生成命令的正確方法是什麼?我這樣做,並沒有工作: 軌摹遷移AddProductCategoryToProductCategories產品分類:引用生成一個用於添加外鍵(表名爲2個字)的遷移
0
A
回答
-1
只是要總結評論部分的工作。 您必須使用,而不是
productcategory
Rails的
product_category
使用_
作爲名稱之間的分隔符,叫蛇的情況下。當開始使用Rails,甚至在長時間使用Rails之後,這可能會有點混亂。該指南是你的朋友?
http://edgeguides.rubyonrails.org/active_record_migrations.html http://edgeguides.rubyonrails.org/association_basics.html
-1
一般而言,表名可以是任何你希望它是什麼。我有時會發現Rails的命名約定有點怪異。
如果你已經產生的product_categories和產品型號/表,然後就去做:
rails generate model product_categories_products product_id:integer product_category_id:integer
這將產生存儲外國鍵和充當代理表的模式。
然後,您將需要建立產品型號有:
has_many product_categories_products
has_many product_categories, through: product_categories_products
然後定義在產品分類
以下has_many product_categories_products
has_many products, through: product_categories_products
終於在ProductCategoryProduct
belongs_to product
belongs_to product_category
然而,上述命名約定是可怕的。你最好將ProductCategory重命名爲'Category',然後你的代理表模型可以是'ProductCategory'。
...或者你可以重新命名一些完全不同的東西,然後在關聯定義中手動指定class_name。
+0
謝謝@JayJay。問題是我的數據庫中有兩個類別表。所以我真的不知道如何命名這兩個,並且同時尊重rails的命名習慣。 – churros
相關問題
- 1. Rails遷移引用一個User,如何添加這個外鍵?
- 2. 在遷移時爲外鍵添加值
- 3. 學說1.2生成的遷移-Diff,產生唯一的外鍵遷移
- 4. 向腳本添加一個鉤子/生成遷移
- 5. 使用生成器添加遷移
- 6. Laravel遷移 - 不能添加外鍵
- 7. SequelizeJS遷移:將多個外鍵添加到相同的模型?
- 8. MySQL不會將外鍵多於一個外鍵添加到同一個表
- 9. 生成從2個關鍵字一個唯一的字符串
- 10. 添加一個外鍵的表
- 11. 添加到一個表的外鍵
- 12. 添加多個列在一個遷移
- 13. 添加一個可爲空的外鍵。
- 14. 節點,JS添加一個外部級使用一個變量作爲鍵名
- 15. 添加遷移一個列名不止一次
- 16. 在rails遷移中添加特定列作爲外鍵
- 17. Rails的:如何創建添加遷移「使用:B樹」外鍵
- 18. Doctrine遷移外鍵
- 19. 外鍵使遷移
- 20. 使用Sequelize中的遷移添加具有外鍵約束的表列使用Sequelize中的遷移
- 21. Cakephp 3.0由遷移生成的外鍵烘烤錯誤
- 22. 跨2個表引用2個主鍵的外鍵?
- 23. 爲什麼schemaexport會生成2個外鍵?
- 24. 如何爲三個主表添加三個外鍵給同一個子表?
- 25. 帶有2個引用表的一個外鍵表
- 26. 如何在SQL Server的表中添加2個外鍵?
- 27. 使用Laravel遷移添加外鍵約束
- 28. MySQL的:不能添加一個外鍵
- 29. 在Rails之外生成遷移
- 30. 添加一個主鍵和一個外鍵會增加總共四個鍵
你將不得不使用下劃線'product_category'或類似的 – Iceman
塔爾一些工作。謝謝! – churros
通過這個閱讀,對遷移http://edgeguides.rubyonrails.org/active_record_migrations.html – Iceman