Модель заказа Rails по вложенным атрибутам в поле JSONB

У меня есть Campaign модель, у которой есть коэффициент конверсии, перечисленный как это:

campaign.quota_data["raw_quota_data"][0]["Conversion"] = 33

Я хотел бы сделать что-то вроде

Campaign.all.order(quota_data["raw_quota_data"][0]["Conversion"])

Какой лучший способ сделать это?

Изменить: пример того, что quota_data Структура данных выглядит так:

{"raw_quota_data"=>
  [
    {"QuotaCPI"=>1.5, "Questions"=>nil, "Conversion"=>0, "SurveyQuotaID"=>4205891, "SurveyQuotaType"=>"Total", "OverQuotaThreshold"=>true}
  ],
  "available_quotas"=>[{"id"=>4205891, "cpi"=>1.0499999999999998, "name"=>"Total", "traits"=>{}, "available"=>400, "conversion"=>0}],
  "rejectable_trait_groups"=>[]
}

1 ответ

Решение

Вы в основном пытаетесь выполнить сортировку в памяти после извлечения данных из базы данных. Вы могли бы просто использовать array.sort или же array.sort_by

Campaign.all.sort_by {|c| c.quota_data["raw_quota_data"][0]["Conversion"]}}
Другие вопросы по тегам