2017-12-18 262 views
0

我有兩個模型'Product'和'Variant',產品有很多變體,現在我必須設置一個名爲「Ingridient」的變體的新模型的關聯,Variant有很多種ingridients.but在ingridents我想表明它再次HAS_ONE產品和variant.for例如與同一模型的關聯

class Variant 
    has_many :ingridients 
    belongs_to :product 
end 

class Ingridient 
belongs_to :variant 
belongs_to :product 
end 

現在我ingrident模型我也想在同一time.how HAS_ONE變種和HAS_ONE產品應設置我的協會。我知道與同一個表的多個關聯,但不知道如何在我的應用程序中實現它。使用mongoid作爲我的數據庫。

編輯:其實在我的流程用戶可以創建一個產品有很多變種,然後每個變種可以有多個ingridients.In.In每個ingrident我有選擇產品和變種形式數據庫的選擇框.means ingridients將包括產品a變量,數量等字段。爲了使它更清晰Iam製作食譜 。

+0

爲什麼你需要'has_one'?您可以通過從「Ingredient」內部調用'self.variant'來訪問相同的變體。兩者有何不同? –

+0

實際上在我的數據流中,我acn創建一個產品有多個變體,然後我有多個ingridients每個varients.and在ingridients我有一個選擇框從databse.so再次選擇product_name和variant_name每個ingridient應包括一個產品和一個變體。 –

+0

這不能用'belongs_to'完成嗎? –

回答

0

我不是100%清楚你想做什麼。

但是它看起來像是你想與一個不同的名稱關聯。

class Variant 
    has_many :ingridients, :foreign_key => 'FieldName', :class_name => 'CassName' 
    belongs_to :product, :foreign_key => 'FieldName', :class_name => "CassName" 
end 

class Ingridient 
belongs_to :variant, :foreign_key => 'FieldName', :class_name => "CassName" 
belongs_to :product, :foreign_key => 'FieldName', :class_name => "CassName" 
end 

我希望這有助於

+0

是的你的答案非常接近我想要的。但我可以有像變種has_many:ingridents和在同一ingrident belongs_to:變種,也belongs_to:變種,forign_key =>'Fieldname',:class_name =>「Classname」 ? –