Rails 管理 gem:如何按 'Published At' 对记录进行排序?

Rails Administrate gem: How to sort records by 'Published At'?

我对 Rails 上 Ruby 的 Administrate gem 非常陌生。 我无法通过 "Published At" 发布 sort/order 个帖子。记录似乎是按其 ID 而不是 published_at 日期排序的,我怎样才能让它工作?

查看 Heroku 上的示例应用程序: https://administrate-prototype.herokuapp.com/admin/blog/posts

提前致谢

您正在寻找 Model.order 函数,这里是文档: https://guides.rubyonrails.org/active_record_querying.html#ordering

如果您有一个名为 Post 的模型,当在控制器函数 show 或您正在使用的任何其他函数中定义它时,您可以获得如下记录,以便按以下方式排序published_at

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

如果您总是希望它按 published_at 排序,您可以在 Post 中使用 default_scope of rails,如下所示 -

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