0

我有一个食谱表,一个成分表和一个关联表(一个食谱“拥有并属于许多”成分和一个成分“拥有并属于许多”食谱)。我没有关联表的控制器或模型。

我想编写一个用随机(但有效)数据填充关联表的任务。我编写了一个为关联表生成有效 id 的代码,但我不知道如何让它进入关联表(因为我没有它的模型)。

我可以以某种方式迭代食谱,并将数据添加到 recipe.ingredients 列表吗?它会自动填充关联表吗?

到目前为止我的代码:

namespace :FillRandomAssociationData do

desc "Fills the recipes - ingredients association table with random data"
task :Recipe_Ingredients_Association => :environment do
  Recipe.all.each do |rec|
    numOfIngredientsPerRecipe =  rand(3)
    ingredientIDLimit = Ingredient.count

    for i in 0..numOfIngredientsPerRecipe
      ingRandId = rand(ingredientIDLimit)
      .... This is where I got stuck...
    end
  end
end

结尾

谢谢,李

4

1 回答 1

1

你只需要用它的成分填充配方对象,然后保存它,Rails 将填充关联表:

desc "Fills the recipes - ingredients association table with random data"
task :Recipe_Ingredients_Association => :environment do
  Recipe.all.each do |rec|
    numOfIngredientsPerRecipe =  rand(3)
    ingredientIDLimit = Ingredient.count

    for i in 0..numOfIngredientsPerRecipe
      ingRandId = rand(ingredientIDLimit)
      rec.ingredients << Ingredient.find(ingRandId)          
    end

    rec.save!
  end
end

请注意,使用此算法,您可以在食谱中多次添加相同的成分。

于 2012-06-15T20:20:02.180 回答