我有一个名为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. Rails 3,使用外键生成迁移
- 3. 在迁移时为外键添加值
- 4. 学说1.2生成的迁移-Diff,产生唯一的外键迁移
- 5. 向脚本添加一个钩子/生成迁移
- 6. 使用生成器添加迁移
- 7. Laravel迁移无法添加外键
- 8. Laravel迁移 - 不能添加外键
- 9. 在Codeigniter迁移中添加外键
- 10. Laravel迁移不会添加外键
- 11. SequelizeJS迁移:将多个外键添加到相同的模型?
- 12. MySQL不会将外键多于一个外键添加到同一个表
- 13. 生成从2个关键字一个唯一的字符串
- 14. 添加另一个表列的外键
- 15. 添加一个外键的表
- 16. 添加到一个表的外键
- 17. 添加多个列在一个迁移
- 18. 添加一个可为空的外键。
- 19. ASP.NET添加迁移生成对IdentityModels.cs更改的空迁移
- 20. mysql无法添加2个外键
- 21. 节点,JS添加一个外部级使用一个变量作为键名
- 22. 添加迁移一个列名不止一次
- 23. 2不同表中的主键作为另一个表中的一个外键
- 24. 在rails迁移中添加特定列作为外键
- 25. SQL - 移动最后2个字符成为第一个2
- 26. 如何为自动生成的数据库添加迁移?
- 27. Rails的:如何创建添加迁移“使用:B树”外键
- 28. 生成迁移新表
- 29. Doctrine迁移外键
- 30. 外键使迁移
你将不得不使用下划线'product_category'或类似的 – Iceman
塔尔一些工作。谢谢! – churros
通过这个阅读,对迁移http://edgeguides.rubyonrails.org/active_record_migrations.html – Iceman