如何按ID中的名称获取有序的类别列表

时间:2015-03-08 12:11:17

标签: ruby-on-rails ruby arrays activerecord model

我从数据库加载数据,例如:

@cars = Car.where(...).order('created_at DESC').group_by { |r| r.voted.to_date }

然后,我认为:

- @cars.each do |key, arr|
  - categories = arr.uniq{|x| x.category_id} # so here I should get list of objects with uniuque category ID
  ...
  - arr.each do |car|
    ... print information about car ...

如何按名称订购此categories列表?在car模型中,有属性category_id

2 个答案:

答案 0 :(得分:0)

使用category.name ASC。尝试,

@cars = Car.includes(:category).where(...).order('category.name ASC')

答案 1 :(得分:0)

“如何按名称订购此类别列表?”这使我们想到使用范围。

以下是设置:在category.rb

  scope :by_name, -> { order(name: :asc) }

现在你有一个引用句柄来获取category.name sorted ascending。

因此,在您看来,您可以为每个| car |

执行类似的操作
<% if car.categories.by_name.any? %>
  <%= render category_name_partial", collection:...%>
     etc.

我用'.any?'只是为了说明由于此操作而您有一个已排序的集合,您列出的列出的名称是根据“by_name”定义的范围排序的。