【发布时间】:2020-03-19 20:29:16
【问题描述】:
如果生产者名称为"ABC",我的客户希望通过producer name 订购产品,否则通过parameters_count 和images_count 订购结果。我的架构如下所示:
Parts
id int PK
producer_id int
images_count int
parameters_count int
Producers
id int PK
lauber_id String
name string
排序的结果应该是有abc的生产者的产品排在最前面,否则显示图片数和参数数大于0的产品。
以“Rails 方式”对结果进行排序的最佳方式是什么。到目前为止,我有这个。
Part.joins('join producers on parts.producer_id = CAST(producers.lauber_id as INT)')
.order("CASE WHEN producers.name = 'ABC' then producers.name END, images_count, parameters_count desc")
有没有更好的办法?
【问题讨论】:
-
你使用的是什么数据库?
-
我正在使用 Postgres
标签: ruby-on-rails postgresql activerecord rails-activerecord