2012-06-19 64 views
3

我在rails應用程序中有一個產品模型,而在產品表中有一個類別列,用逗號分隔。我想創建一個連接表(product_categories),以便類別不再以逗號分隔(使計數更容易)。我正在計劃通過產品表上的id進行連接,並且在連接表上有id,product_id和類別。如何在Rails中生成連接表

運行遷移以創建連接表還是生成模型然後運行遷移以創建連接表是最佳實踐嗎?

我正在運行rails 3.1.0。

回答

2

兩種方法都可以工作;這基本上是the difference between has_many :through and has_and_belongs_to_many

如果您需要與連接本身交互作爲模型(例如對其進行驗證,添加其他元數據等),則應該爲連接生成模型,並將關係定義爲has_many:through。

但是,就您而言,您似乎不太可能需要添加有關給定產品類別連接的額外信息,因此,爲連接表創建遷移並使用它們可能更有意義一個has_and_belongs_to_many關係。

+1

與has_many:through相比,HABTM關係的優勢在於使用燈具。 HABTM關係允許您在產品夾具中指定產品所屬的所有類別。但是如果你使用has_many:通過你必須在它自己的fixture文件中指定category和product之間的每個關係。 –