我有一个特定的排序案例,我正在尝试完成。我的模型对象ItemName
具有类型categories
的属性json
。看起来像这样:
@item1.categories = {"Major Category A"=>{"Sub Category 1"=>10}}
@item2.categories = {"Major Category A"=>{"Sub Category 1"=>7},"Major Category B"=>1}
@item3.categories = {"Major Category A"=>{"Sub Category 1"=>8,"Sub Category 2"=>2},"Major Category B"=>3}
类别存储类别信息,其中整数值指示项目应在该主要和/或子类别中的顺序。我想完全重新排序数据:而不是按项目,而是按类别查看。换句话说,以上数据应转换为以下数据:
@category_hash = {
"Major Category A" => {
"Sub Category 1" => {"ordered_list"=>[@item2.id, @item3.id, @item1.id]},
"Sub Category 2" => {"ordered_list"=>[@item3.id]}
},
"Major Category B" => {"ordered_list"=>[@item2.id,@item3.id]}
}
我意识到我应该遍历@all_items
,但说实话,要使项目的序数性质正常工作是很困难的。例如,在上述情况下,如果我依次浏览这3个项目,则在第一个项目之后,@category_hash
会像这样:
@category_hash = {
"Major Category A" => {
"Sub Category 1" => {"ordered_list"=>[@item1.id]}
}
}
然后针对@item2
,我不能只是将其添加到适当的ordered_list
的{{1}}的末尾,而是知道将其添加到前面,因为它的值为7(在10前面)。随着事情变得越来越复杂,我不确定如何以任何一种效率继续保存订单。
感谢您的帮助!