【发布时间】:2016-03-25 23:45:28
【问题描述】:
我有一长串 Photo 模型对象,我想按 created_at 对它们进行排序,最新的优先,然后得到一个包含前 21 张照片的新数组。
我的问题是最终的数组没有正确排序。
这是我的代码:
@recent_photos = photos.sort_by(&:created_at).reverse.first(21)
当我打印出@recent_photos 时,created_at 值的顺序如下:
1458948707
1458943713
1458947042
1458945171
...
对对象进行排序的正确方法是什么?
更新:
这是初始列表的编译方式:
photos = @user.photos
@following = @user.following
@following.each do |f|
photos += f.photos if f.id != @user.id
end
@user.memberships.each do |group|
photos += group.photos
end
解决方案:
问题出在问题上 - 我想按 timestamp 而不是 created_at 排序,这些是输出中的 timestamp 值
【问题讨论】:
-
从我所见,排序应该可以正常工作,您的
created_at是什么类类型? -
idk,它是由 Rails 自动生成的,但如果它是一个字符串,可能是问题?
-
您能运行
photos.map(&:created_at).first(21)并粘贴它吗?除非我遗漏了什么,否则您的排序绝对应该是正确的。 -
跑了,他们在那个输出中肯定是有序的
-
您需要添加更多信息,“照片”是什么样的?它是活动记录对象的数组吗?或哈希?一个小的模拟模型应该会有所帮助。您的预期输出是什么?
标签: ruby-on-rails ruby