我試圖在rails中創建父/子關係關聯,但我不太確定如何執行此操作。Ruby on Rails ActiveRecord:使用連接在同一模型中創建父/子關係
我有兩個表格,產品和products_products。這兩個表格讓我有產品和子產品。
products
-----------
id | title | ...
products_products
-----------------
id | product_id | parent_product_id | ...
我想要做的是獲得產品的所有兒童產品。
所以我必須:
class Product < ActiveRecord::Base
...
has_many :products_products
has_many :child_products, through: :products_products, source: :product
has_many :parent_products, through: :products_products, source: :parent_product
...
end
class ProductsProduct < ActiveRecord::Base
....
belongs_to :product
belongs_to :parent_product, class_name: "Product", foreign_key: "parent_product_id"
....
end
的parent_products協會的工作,但我不知道如何讓child_products。
的SQL是:
SELECT "products".*
FROM "products"
INNER JOIN "products_products" ON "products"."id" = "products_products"."product_id"
WHERE "products_products"."parent_product_id" = <myProductd>
的目標是要能說myProduct.child_products得到的子產品的列表。
對於從業務邏輯的角度來看,你有什麼想做的事情,我有點困惑。儘管我會說product_products是一張桌子的糟糕名字。我也錯過了爲parent_products和child_products定義表的位置。你能否給出一個你想要完成的更詳細的例子? – 2014-09-04 19:40:46
基本上,我試圖創建一個自引用連接,以便產品可以有子產品。即產品#1可以是產品#2,產品#3等的父母。任何產品可以是任何其他產品的父母。我需要一種方式來獲取產品的所有孩子或產品的所有父母的清單。 products_products表只是保存這些關係的連接表。 – 2014-09-04 19:45:31