2017-02-16 39 views
0

我有一個名爲product_categories的表。我想創造一種自我關係。使用遷移生成命令的正確方法是什麼?我這樣做,並沒有工作: 軌摹遷移AddProductCategoryToProductCategories產品分類:引用生成一個用於添加外鍵(表名爲2個字)的遷移

+0

你將不得不使用下劃線'product_category'或類似的 – Iceman

+1

塔爾一些工作。謝謝! – churros

+0

通過這個閱讀,對遷移http://edgeguides.rubyonrails.org/active_record_migrations.html – Iceman

回答

-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