Rails单向“ has_many”协会

时间:2019-02-21 20:03:03

标签: ruby-on-rails associations

我试图制作基于Rails的应用程序(并且我正在学习RoR),但我偶然发现了这个问题。

有两种模型:食谱和项目(食品)。配方可以为零(我们可以在添加项目之前创建配方)或许多项目。但是特定的食物不应与任何食谱绑定。这就是为什么“ has_many”和“ belongs_to”对我不起作用的原因,因为后者不能满足此要求。

如果我要在没有任何框架的情况下进行此操作,则可能会在Recipe表中放置一个“ items”列,其中将包含项目索引列表。但是我有一种直觉,因为在Rails中存在模型关联,所以这不是在RoR中执行此操作的合适方法。 拜托,有人可以给我一个想法怎么做吗?

1 个答案:

答案 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