ActiveRecord关联,has_many通过

时间:2012-08-25 15:54:05

标签: ruby-on-rails-3 activerecord has-many-through polymorphic-associations

我一直试图绕过这些联想,我遇到了一些障碍。我正在研究的应用程序目前有两种型号:成分和食谱。每个背后的逻辑如下:

成分模型包含有关食品的信息,例如名称,批量价格等。 配方模型包含配方名称,准备说明和成分列表(以及配方所需的量)。

在深入了解了这里的一些问题,并观看了一些关键视频后,我已经确定了一个has_many_through关系可能对我正在尝试做的更好,因为我想要包含有关该成分的其他信息在食谱中(需要的量)。

基于我在这方面的有限经验,我想这样做:

class Recipe < ActiveRecord::Base
  has_many :ingredients_recipes
  has_many :ingredients, :through => :ingredients_recipes
end

class Ingredient_Recipe < ActiveRecord::Base
  belongs_to :ingredient
  belongs_to :recipe
end

class Ingredient < ActiveRecord::Base
  has_many :ingredients_recipes
  has_many :recipes, :through => :ingredients_recipes
end

ingredients_recipes表的字段与此类似:recipe_id,ingredient_id,ingredient_qty(用于存储配方中特定成分的含量)

根据我上面提到的功能,这是以代码方式处理它的正确方法吗?任何帮助将不胜感激。谢谢!

修改 我也希望能够从食谱表格中将这些新成分添加到配方中。这需要额外的东西,比如必须为贯穿表做accept_nested_attributes_,还是Rails会自己处理这个东西?

1 个答案:

答案 0 :(得分:0)

当一个对象可以连接零个或多个其他对象时,:has_many through方法效果最佳&amp; 有一些与每个连接关联的属性

例如,在您的情况下,您将在Connections表中存储每种成分的数量以及recipe_id和ingredient_id。

所以,它对我来说很好看。 :)

但是,您应该考虑将Ingredient_Recipe表命名为更合适的名称。