在这种情况下,locales
和aliases
共享相同的结构,因此我以相同的方式迭代它们只更改其名称。
if yml_site['locales'].present?
yml_site['locales'].each_value do |yml_locale|
site = Site.find_or_create_by_domain(
locale: yml_locale['locale'],
domain: yml_locale['domain'],
title: yml_locale['title'],
parent: yml_site['domain'],
end
end
if yml_site['aliases'].present?
yml_site['aliases'].each_value do |yml_alias|
site = Site.find_or_create_by_domain(
locale: yml_alias['locale'],
domain: yml_alias['domain'],
title: yml_alias['title'],
parent: yml_alias['domain'],
end
end
end
我正在考虑用[yml_site['locales'],yml_site['aliases']].each.each_value
之类的东西来简化这段代码,但很明显它不起作用。知道如何在同一个查询中迭代yml_site['locales']
和yml_site['aliases']
?
答案 0 :(得分:5)
这个怎么样:
(yml_site['locales'] + yml_site['aliases']).each_value do |yml_locale|
...
end
答案 1 :(得分:1)
简单的方法是将迭代块推送到公共方法并通过方法调用访问它。
其他替代方案, 只需执行数组添加,
x1 = [1,2,3]
x2 = [3,4,5]
x1 + x2, and then perform iteration as done for array.
要并行执行操作,您可以使用
x1.zip(x2).each do |u,v|
p u
p v
#perform find_or_create operation
end