1
我有一個rails API,它返回JSON到我的React前端。我試圖按集合中每個項目的計算值進行排序。我有一個Space
模型,它具有area
屬性和count
屬性。我想按total_area
排序,這只是area * count
。我能夠做到這一點使用sort_by
但過程相當緩慢,甚至少於100個記錄:如何使用Activerecord中的計算值進行排序?
@spaces = Space.all
@spaces = @spaces.sort_by(&:total_area)
凡total_area
是Space
類方法:
def total_area
self.area * self.count
end
反正有沒有做到這一點在數據庫內獲得速度的改善?我已經使用order
方法嘗試:
@spaces.order("count * area" => :asc)
,但我得到了以下的Postgres錯誤:
PG::UndefinedColumn: ERROR: column spaces.count * area does not exist
是可以做到這一點的數據庫?任何關於我如何能做到的建議,或者我如何能夠更快地做到這一點,都會非常感激。