Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Добавление дополнительных атрибутов сортировки в массив записей, затем сортировка!

Автор вопроса: keruilinОтветов: 1

Допустим, я запускаю запрос ActiveRecord, и он возвращает 3 результата с кучей атрибутов.

Я хочу добавить 3 атрибута к каждой записи в массиве, чтобы я мог выполнять сортировку на уровне кода. Эти 3 включают: num_comments, num_views, last_view.

  1. Как добавить эти атрибуты?
  2. Как мне отсортировать записи в порядке старшинства по num_comments И по num_views И по last_view?

ruby-on-railsattributessorting

Ответы

Ответ 1 · рейтинг 1 · Patrick Klingemann

Расширяя ответ Ларри К. и комментарий zed_0xff, зачем вообще создавать атрибуты, просто отсортируйте по методу в вашей модели:

class Widget < ActiveRecord::Base
  def num_comments
    #count comments
  end

  def num_views
    #count views
  end

  def last_view
    #return last view
  end
end

в вашем контроллере

class WidgetsController < ApplicationController
  def index
    @widgets = Widget.all.sort_by{ |r| [r.num_comments, r.num_views, r.last_view] }
  end
end

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы