【发布时间】:2016-10-10 14:21:22
【问题描述】:
我有一个用户模型,里面有一个数组。该数组用于存储用户在各种活动中获得的分数。基本上是这样的:
<ActiveRecord::Relation [#<User id: 1, fullname: "Kaja Sunniva Edvardsen", points: [0, 4170, 3860, 2504, 2971, 3859, 4346]>, #<User id: 2, fullname: "Alexander Lie Sr.", points: [0, 3273, 3681, 2297, 2748, 4202, 3477]>]>
我想按点数组中的不同值对所有用户进行排序,以便能够为每个不同的活动创建排名列表,点 [0]、点 [1] 等...
按点排序[1]应该首先返回Kaja,4170>3273,按点排序[6]应该把Alexander放在首位,4202>3859
我该怎么做?
【问题讨论】:
-
您到底想要排序什么?用户或积分或?你如何排序 - 什么是“不同的价值观”?你能给出预期的结果吗?
-
我想按数组中的值对用户进行排序。像 OrderBy(points[1]) 这样的东西不起作用。我想要的结果是 Kaja 第一和 Alexander 第二,因为 Kajas 点 [1] 值更高,4170 vs 3273
-
什么是模型定义和用户迁移?你究竟是如何在 db 中存储一个数组的?
-
另外,您是否绝对需要在 DB 中排序,或者您可以将所有对象加载到 Rails 并在那里排序?每个排序组将有多少个对象?只是想如果有比赛或按分数对用户进行排序的事情,每个比较组不应该有太多用户(最多数千?而不是数百万)
-
我使用 ActiveRecord 的序列化声明将其存储在用户模型中:序列化 :points 迁移:change_column :users, :points, :text, :default => [0]
标签: mysql sql ruby-on-rails sorting