Ruby双迭代

Ruby双迭代,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,我想知道是否有一种最性感的方式来进行两次迭代,我的意思是,我在同一个关系上有两次迭代,如下所示: bars = ActiveRecord::Relation [.....] bars.each do |bar| do_something1(bar) do_something2(bar) end bars.each do |bar| do_something3(bar) do_something4(bar) end 显而易见的答案是: bars.each do |bar| d

我想知道是否有一种最性感的方式来进行两次迭代,我的意思是,我在同一个关系上有两次迭代,如下所示:

bars = ActiveRecord::Relation [.....]
bars.each do |bar|
  do_something1(bar)
  do_something2(bar)
end
bars.each do |bar|
  do_something3(bar)
  do_something4(bar)
end
显而易见的答案是:

bars.each do |bar|
  do_something1(bar)
  do_something2(bar)
  do_something3(bar)
  do_something4(bar)
end
但事实上,我确实需要先完成do_something 1bar和do_something 2bar,然后在同一关系上执行do_something 3bar和do_something 4bar。也许这是个新手问题,但我尝试的任何东西都比这更难看。有什么建议吗

提前谢谢

更新:抱歉,我忘了说我已经试过了:

bars.each do |bar|
  do_something1(bar)
  do_something2(bar)
end.each do |bar|
  do_something3(bar)
  so_something4(bar)
end

但就代码理解而言,第一个和改进很容易理解,这只是一个词,这就是我没有使用它的方式

在一般情况下,您可以在枚举上链接操作,如


因为您的问题涉及ActiveRecord,所以可能有一种更好的方法来做您想要做的事情,而不是这个通用示例。

一般情况下,您可以在枚举表上链接操作,如


由于您的问题涉及到ActiveRecord,因此可能有一种比这个通用示例更好的方法来实现您的目标。

您能否提供更多关于您要实现的目标的详细信息?也许有一个比双循环更好的方法。如果你需要做一些事情3和做一些事情4,那么我知道没有其他方法,只是每个做。。。结束,每个人。也许,如果你对你要做的事情解释得更多,就会有更好的解决办法。你能不能就你要做的事情给出更多的细节?也许有一个比双循环更好的方法。如果你需要做一些事情3和做一些事情4,那么我知道没有其他方法,只是每个做。。。结束,每个人。也许如果你对你要做的事情做更多的解释,会有更好的解决方案。你很少需要这样做,但如果你这样做,这是一种非常简洁的方法。您可能希望在使用时添加一条注释,解释为什么不能将其折叠成单个,因为乍一看可能并不明显。之所以必须采用这种方式,是因为do_something2bar在操作系统上创建了一个文件,do_something3bar使用此文件在ruby on rails外部运行系统命令。当rails中的其他工作人员也异步使用文件时,文件的创建和使用就需要独立。很少需要这样做,但如果这样做,这是一种非常简洁的方法。您可能希望在使用时添加一条注释,解释为什么不能将其折叠成单个,因为乍一看可能并不明显。之所以必须采用这种方式,是因为do_something2bar在操作系统上创建了一个文件,do_something3bar使用此文件在ruby on rails外部运行系统命令。一旦rails中的其他工作人员也异步使用这些文件,文件的创建和使用就需要独立。
my_array.each { |e| do_something1(e) }.each { |e| do_something2(e) }