Arrays &引用;“合并”;两个数组,并在Rails中迭代新数组

Arrays &引用;“合并”;两个数组,并在Rails中迭代新数组,arrays,ruby-on-rails-3,Arrays,Ruby On Rails 3,假设我有 @colors = @product.colors.all @storages = Storage.all 我需要遍历这两个的所有组合,并在不同的模型中创建一个条目 如何告诉应用程序为每种颜色、存储和分配相应的ID运行此呼叫 Stock.find_or_create_by_product_id(:product_id => @id, :color_id => XXX, :storage_id => XXX) 我有个秘密要告诉你:鲁比有。其中有一些是隐藏在不好的开发

假设我有

@colors = @product.colors.all
@storages = Storage.all
我需要遍历这两个的所有组合,并在不同的模型中创建一个条目

如何告诉应用程序为每种颜色、存储和分配相应的ID运行此呼叫

Stock.find_or_create_by_product_id(:product_id => @id, :color_id => XXX, :storage_id => XXX)

我有个秘密要告诉你:鲁比有。其中有一些是隐藏在不好的开发人员面前的,你可以用它们来让你的同事觉得很棒,它们都在文档中向那些知道的人透露。例如,是一个非常棒的方法,它将另一个数组作为参数,并返回一个包含这两个数组的每个组合的数组(事实上,它将使用无限数量的数组并返回所有数组的所有组合)。很酷吧

以下是您可以如何使用它来简化您的情况:

@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

欢迎来到秘密俱乐部。:)

嘿,谢谢你的回复。我在数组文件中跳得太快,错过了那一个。谢谢你指出这一点。解决了的。对于其他人,您可能希望用
find\u或\u create\u by
方法替换
create
,以避免重复。