如何从 Rails 的列表中删除重复的国家?

How to remove duplicate countries from the list in Rails?

我在 Rails 5.2 和 Mongoid 7.0

上使用 Ruby

如何从列表中删除重复的国家

@badge = @user.places.all

<%= @badge.each do |badge| %>
  <%= badge.country %><p>
<% end %>

现在结果:

France Netherlands Spain Netherlands Netherlands Netherlands Indonesia

我需要:

France Netherlands Spain Indonesia

尝试将第一行替换为:@badge = @user.places.all.uniq.

Reference

我假设徽章不同,但其中一些徽章似乎属于同一个国家。因此我认为你不能在徽章上调用 unique 但必须在不同国家的列表上调用它:

<% @badge.map(&:country).unique.each do |country| %>
  <p><%= country %></p>
<% end %>

根据您的数据库结构,如果您需要将整个 @badges 变量放在另一个地方,也可以选择仅从数据库加载不同的国家/地区列表:

@countries = @user.places.distinct.pluck(:country)

<% @countries.each do |country| %>
  <p><%= country %></p>
<% end %>