Rails比较2个不同集合中的值

时间:2018-05-09 02:59:32

标签: ruby-on-rails ruby-on-rails-5

有没有办法比较一个集合中的值,看看它是否在另一个集合中?我试图将current_users.groups与其中的内容进行比较  @service_requests.unit.groups如果匹配,我将只显示用户服务请求。以下是有效的,但它并不是我所寻找的,因为它会列出多个结果。基本上,如果current_user在该组中并且未显示所有服务请求,我正在寻找仅显示组服务请求的方法。

可能最好从索引视图中删除它并尝试制作一个范围?

   <% @service_requests.each do |sr| %>
      <% current_user.groups.each do |group| %>
          <% if sr.unit.group == group.title %>
            <%= group.title %>
            <%= group.description %>
          <% end %>
      <% end %>
    <% end %>

1 个答案:

答案 0 :(得分:2)

假设current_users.groups等于

[{name: 'it'}, {name: 'graphics'}, {name: 'marketing'}]

@service_requests.unit.groups等于

[{name: 'graphics'}, {name: 'test'}]

然后你可以得到这两个数组的交集:

current_users.groups & @service_requests.unit.groups # => [{name: 'graphics'}]

另请参阅this link了解其他情况。