JSON을 내 프런트 엔드에 반환하는 레일 API가 있습니다. 컬렉션의 각 항목에 대해 계산 된 값으로 정렬하려고합니다. 나는 area
속성과 count
속성을 가진 Space
모델을 가지고있다. total_area
으로 응답을 정렬하고 싶습니다. 바로 area * count
입니다. 나는 sort_by
를 사용하여이 작업을 수행 할 수 있어요하지만 과정은 더 적은 100 개 레코드와 매우 느리다 :Activerecord에서 계산 된 값으로 정렬하는 방법?
def total_area
self.area * self.count
end
이렇게 어쨌든 거기 : total_area
는 Space
클래스 메소드입니다
@spaces = Space.all
@spaces = @spaces.sort_by(&:total_area)
데이터베이스 내에서 속도 향상을 얻을 수 있습니까? 나는 order
방법을 사용하여 시도했다 :
@spaces.order("count * area" => :asc)
을하지만 나는 다음 포스트 그레스 오류 얻을 :
PG::UndefinedColumn: ERROR: column spaces.count * area does not exist
데이터베이스에서이 작업을 수행 할 수 있습니다를? 내가 할 수있는 방법에 대한 제안이나이 정렬을 더 빨리 할 수있는 방법에 대해 매우 감사하게 생각합니다.