一次循环通过2个模型对象

wal*_*lta 3 ruby iterator ruby-on-rails mysql2

我有一个用户对象,我通过简单的调用暴露:

@users = User.all
Run Code Online (Sandbox Code Playgroud)

在我使用自定义SQL生成结果的地方,我也有一些更昂贵的查询.

@comment_counts = User.received_comment_counts
Run Code Online (Sandbox Code Playgroud)

此调用和其他类似的调用将返回按ID排序的列表中每个用户一个元素的对象.

在我看来,我想同时遍历用户和comment_counts对象.例如:

for user, comment_count in @users, @comment_counts do
end
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何做到这一点.我似乎也无法弄清楚如何从@comment_counts结果中获取单个记录而不通过@ comment_counts.each运行它

是不是有某种方法可以为每个lits对象构建迭代器,将它们转储到while循环中并在循环的每次传递中单独执行迭代器?此外,如果您可以回答这个问题,我可以在哪里学习如何逐步浏览rails中的列表.

Wiz*_*Ogz 6

这样的事情对你有用:

@users.zip(@comment_counts).each do |user, comments_count|
  # Do something
end
Run Code Online (Sandbox Code Playgroud)

我从未在Ruby中遇到迭代器的手动操作,更不用说它无法完成.这样的代码可能会很混乱,所以我可能更喜欢更优雅的解决方案.