Rails 按 has_many 排序:通过属性总和
Rails order by has_many :through attribute sum
我需要根据遥测值的总和对分类进行排序。
这些是我的模型:
class Assortment < ApplicationRecord
has_many :sensors
has_many :telemetries, through: :sensors
end
class Sensor < ApplicationRecord
belongs_to :assortment, optional: true
has_many :telemetries, dependent: :destroy
end
class Telemetry < ApplicationRecord
belongs_to :sensor
end
我可以通过遥测值的总和来订购传感器:
Sensor.joins(:telemetries).group("sensors.id", "telemetries.sensor_id").order("sum(telemetries.value) desc")
但是我怎样才能对分类做同样的事情呢? (我使用 PostgreSQL)
好的,原来很简单:
Assortment.joins(:telemetries).group("assortments.id", "telemetries.sensor_id").order("sum(telemetries.value) desc")
我需要根据遥测值的总和对分类进行排序。
这些是我的模型:
class Assortment < ApplicationRecord
has_many :sensors
has_many :telemetries, through: :sensors
end
class Sensor < ApplicationRecord
belongs_to :assortment, optional: true
has_many :telemetries, dependent: :destroy
end
class Telemetry < ApplicationRecord
belongs_to :sensor
end
我可以通过遥测值的总和来订购传感器:
Sensor.joins(:telemetries).group("sensors.id", "telemetries.sensor_id").order("sum(telemetries.value) desc")
但是我怎样才能对分类做同样的事情呢? (我使用 PostgreSQL)
好的,原来很简单:
Assortment.joins(:telemetries).group("assortments.id", "telemetries.sensor_id").order("sum(telemetries.value) desc")