排序不适用于不是数据库列的列 Rails 6.1.4.4

Sorting is not working on a column which is not a database column Rails 6.1.4.4

我们有一个视图,其中列出了 table 视图中的订单,它包含以下列

  1. 订单编号
  2. 订单说明
  3. 订购日期和时间
  4. 订单送达地址

现在在此列“订单交付时间”中显示固定时间,即在 30 分钟内交付。 所以在这个专栏中,我们总是在“订单日期和时间”字段中添加 30 分钟。 由于此字段不在数据库中,也不在订单数据集合中,那么我应该如何向“订单交付于”这一列添加排序?

在 rails 6.1 中还有其他方法吗?

目前,我正在这样整理我的订单

@orders.order(column_name: :sort_order)

我遇到了这个错误

ERROR:  column "delivered_at" does not exist.

如有任何帮助,我们将不胜感激。

如果有任何其他处理这种情况的最佳方法,请告诉我。 谢谢

在这种特定情况下,按“订单交货时间”排序等同于按“订单日期和时间”排序,因为这些字段是相关的。所以你可以使用数据库字段进行排序 在你的控制器中做

SPECIAL_SORTS = {
  delivered_at: :order_date
}

那么在你的排序方法中:

def apply_sort(column)
  if SPECIAL_SORTS.key?(column)
    column = SPECIAL_SORTS[column]
  end
  sort(column) # do your sorting by db column
end