假设我有
@colors = @product.colors.all
@storages = Storage.all
我需要遍历这两者的所有组合,并在不同的模型中创建一个条目
如何告诉应用为每种颜色,存储运行此调用并分配相应的ID?
Stock.find_or_create_by_product_id(:product_id => @id, :color_id => XXX, :storage_id => XXX)
答案 0 :(得分:3)
我有一个秘密:Ruby有documentation。 lots really awesome methods Array#product隐藏在糟糕的开发人员面前,您可以使用这些开发人员对您的同事看起来很棒,而且他们都向那些人展示了在文档中知道。例如,{{3}}是一个非常棒的方法,它将另一个数组作为参数并返回一个数组,其中包含这两个数组的每个组合(事实上,它将需要无限数量的数组并返回所有组合所有数组)。很酷,对吧?
以下是您如何使用它来简化您的情况:
@colors = @product.colors.all
@storages = Storage.all
@colors.product(@storages).each do |color, storage|
Stock.find_or_create_by_product_id(:product_id => @id, :color_id => color.id, :storage_id => storage.id)
end
欢迎来到秘密俱乐部。 :)