与同一模型的关联

问题描述:

我有两个模型'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'完成吗? –

我不是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” ? –