通过视图中的唯一(不包括单个列)值循环

时间:2017-09-20 14:20:48

标签: ruby-on-rails uniq

我正在跟踪哪些用户编辑存储为数据库条目的文本文件。

我有一个信用模型,可以跟踪用户,编辑的文件以及编辑发生的时间戳。

在我的控制器中,我有一个选择条目编辑器的查询,并加入信用模型的时间戳。

@editors = User.select("name, users.id, credit.created_at").joins("INNER JOIN credits ON credits.user_id = users.id WHERE credit.file_id = " + x)

在我看来,我不想显示重复的编辑器,但是加入用户的唯一时间戳会导致重复的编辑器打印

<% @editors.uniq.reverse_each do |e| %>
    <%= link_to e.name, user_path(e.id) %>
    <%= e.created_at %>
<% end %>

有没有办法可以在我的视图中从uniq比较中排除某个列?

1 个答案:

答案 0 :(得分:0)

这不是最干净的解决方案。但如果我是时间紧缩,这就是我要做的事情

<% editor_id = 0 %>
<% @editors.uniq.reverse_each do |e| %>
    <% unless editor_id == e.id %>
      <%= link_to e.name, user_path(e.id) %>
      <%= e.created_at %>
      <% editor_id = e.id %>
     <% end %>
<% end %>

我在这里做的是初始化一个名为 editor_id 的变量,然后检查它是否与编辑器ID相同。如果为false,则显示编辑器

我希望这有助于您并使您走上正确的轨道