gpt4 book ai didi

ruby-on-rails - Ruby 在数组中排序哈希时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:14 25 4
gpt4 key购买 nike

我有一个返回以下数组的数据模型:

[[54993, {:posted_at=>1363066554, :item_id=>55007,..}],..]

54993 是 post_id。我正在尝试获取此数组并按 posted_at 排序。该数组按 posted_at 正确排序。这是我当前的代码:

  post_ids = UserFeed.new(current_user.id).posts.collect{|x| x[0]}
posts = Post.where(:id => post_ids)

这按 post_id 排序,而不是 posted_at。我试图找出如何按 posted_at 排序,并想知道为什么数组按 post_id 求助。

最佳答案

where(ids) 不设置顺序,它使用 SQL IN (id1, id2, ...)。使用 ActiveRecord:

post_ids = UserFeed.new(current_user.id).posts.map(&:first)
posts = Post.where(:id => post_ids).order("posted_at ASC")

如果没有属性posts.posted_at,那么,方案一:

posts = post_ids.map { |post_id| Post.find(post_id) }

解决方案 2:执行单个查询然后排序:

indexes = Hash[post_ids.map.with_index.to_a]
posts = Post.where(:id => post_ids).sort_by { |p| indexes[p.id] }

关于ruby-on-rails - Ruby 在数组中排序哈希时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15372503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com