根据关联的数据列对记录进行排序

Sort Records according to associated data column

我真的很沮丧,我怎么能根据关联的数据列对记录进行排序

我正在我的控制器中获取记录,例如

 @collection = @collection.includes(:countries).page(params[:page]).per(per_page)

在我的索引页中我这样做

<tbody>
  <% @collection.each do |price_mapping| %>
    <tr>
      <td><%= price_mapping.countries.pluck(:name).join(', ') %></td>
      <td><%= price_mapping.currency.code %></td>
      <td><%= price_mapping.program.name %></td>
      <td><%= price_mapping.active %></td>
      <td><%= price_mapping.default %></td>
    </tr>
  <% end %>
</tbody>

连线

price_mapping.countries.pluck(:name).join(',')

我得到了像

这样的国家名称
Åland Islands, Algeria, Zimbabwe

现在我想根据第一个国家名称对我所有的@collections 进行排序 例如,如果一个集合有国家[津巴布韦、阿富汗、巴基斯坦],它将是最后一条记录,而如果有国家如[阿富汗、津巴布韦、加拿大],它将是第一个。

也许是这样的?

@collection = @collection.joins(:countries).order('countries.name ASC').page(params[:page]).per(per_page)

我们可以简单地使用 Order with includes

@collection = @collection.includes(:countries).order('countries.name ASC').page(params[:page]).per(per_page)

我不知道我什么时候尝试通过加入来执行此操作时,我得到了重复的记录,我必须添加 distinct 并且在该命令之后不起作用。