Как отсортировать записи по опубликованным в?

Я новичок в геме администрирования для Ruby on Rails. Я не могу отсортировать / упорядочить посты по "Опубликовано в". Кажется, что записи упорядочены по их идентификаторам, а не поpublished_at дата, как я могу заставить его работать?

См. Пример приложения на Heroku:https://administrate-prototype.herokuapp.com/admin/blog/posts

заранее спасибо

3 ответа

Решение

Вы ищете Model.orderфункции, вот документы:https://guides.rubyonrails.org/active_record_querying.html

Если у вас есть модель с именем Post, при определении его в функции контроллера show или любой другой, который вы используете, вы можете получить запись, как показано ниже, чтобы она была отсортирована по опубликованному_at

Post.order(published_at: :desc) # ActiveRecord ordering
# OR
Post.sort_by(&:published_at) # pure Ruby sorting implementation

Если вы всегда хотите, чтобы он был отсортирован по published_at, вы можете использовать default_scope рельсов в Post как показано ниже -

default_scope { order(published_at: :desc) }

Это просто, вам нужно изменить request.query_parametersнет paramsчтобы выполнить свою работу.


Вот пример

      # app/controllers/admin/users_controller.rb
# frozen_string_literal: true

module Admin
  class UsersController < Admin::ApplicationController
    before_action :default_params

    def default_params
      request.query_parameters[:user]             ||= {}    # change :user --> your resource
      request.query_parameters[:user][:order]     ||= :id   # your field
      request.query_parameters[:user][:direction] ||= :desc # your direction
    end
Другие вопросы по тегам