Rails在JSONB字段中按嵌套属性排序模型

时间:2017-04-01 20:16:14

标签: ruby-on-rails postgresql 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 个答案:

答案 0 :(得分:1)

您基本上是在从数据库中获取数据后尝试进行内存排序。您可以使用array.sortarray.sort_by

Campaign.all.sort_by {|c| c.quota_data["raw_quota_data"][0]["Conversion"]}}