Rails: 如何在一个循环中访问两个模型

Rails: How to access two models in a single loop

我正在使用 Audited gem 来跟踪对用户所做的更改。我想准确显示的是所做的更改,即审计与它们在同一时间更新的时间 row.I 试图以这种方式显示它,但它会重复。

<% @users.each do |user| %>
  <% user.audits.each do |audit| %>
    <% if audit.action != "create" %>
    <% user.revisions.each do |revision| %>
    <tr class="list-item">
      <td>
        <%= user.role %>
      </td>

      <td>
        <%= audit.action %>
      </td>

      <td>
        <%= audit.audited_changes %>
      </td>

      <td>
        <%= revision.created_at %>
      </td>

      <td>
        <%= revision.updated_at %>
      </td>
    </tr>
      <% end %>
    <% end %>
  <% end %>
<% end %>

我想要的是能够显示它们而无需多次显示单个更改。

我正在寻找类似

的表达式
for(i=5,j=3;j<5;i++,j++){
     ....
}

在rails中,避免重复。谢谢

我是这样解决的,因为审核和修订的数量相同 elements.I 希望对其他人有所帮助。

<% @users.each do |user| %>
      <% user.audits.each_with_index do |audit, i| %>
        <% if audit.action != "create" %>
        <% user.revisions[i] %>
        <tr class="list-item">
          <td>
            <%= user.role %>
          </td>

          <td>
            <%= audit.action %>
          </td>

          <td>
            <%= audit.audited_changes %>
          </td>

          <td>
            <%=user.revisions[i].created_at %>
          </td>

          <td>
            <%= user.revisions[i].updated_at %>
          </td>
        </tr>
        <% end %>
      <% end %>
    <% end %>

您也可以尝试 zip

user.audits.zip(user.revisions) do |audit, revision|