我试图制作基于Rails的应用程序(并且我正在学习RoR),但我偶然发现了这个问题。
有两种模型:食谱和项目(食品)。配方可以为零(我们可以在添加项目之前创建配方)或许多项目。但是特定的食物不应与任何食谱绑定。这就是为什么“ has_many”和“ belongs_to”对我不起作用的原因,因为后者不能满足此要求。
如果我要在没有任何框架的情况下进行此操作,则可能会在Recipe表中放置一个“ items”列,其中将包含项目索引列表。但是我有一种直觉,因为在Rails中存在模型关联,所以这不是在RoR中执行此操作的合适方法。 拜托,有人可以给我一个想法怎么做吗?
答案 0 :(得分:2)
我通常不使用has_and_belongs_to_many,但是对于您而言,这似乎很合适。您可以像这样使用它:
class Recipe
has_and_belongs_to_many :items
end
class Item
has_and_belongs_to_many :recipes
end
您还可以使用has_many:through,但是您必须创建第三个表才能将Recipe和Item表连接在一起。
class Recipe
has_many :item_recipes
has_many :items, through: :item_recipes
end
class ItemRecipes
belongs_to :recipe
belongs_to :item
end
class Item
has_many :item_recipes
has_many :recipes, through: :item_recipes
end
您可以在此处找到更多信息:Rails Associations