我是这个 Rails 世界的新手。我无法解决这个问题。如何获取@microposts 按创建微帖子的日期排序。
这是行
@microposts = current_user.followeds.map(&:microposts).flatten
我只设法按日期订购了“关注者”,但这不是我想要的。我所做的所有尝试都给了我错误,所以我想我不知道某些语法。
欢迎任何帮助!
我是这个 Rails 世界的新手。我无法解决这个问题。如何获取@microposts 按创建微帖子的日期排序。
这是行
@microposts = current_user.followeds.map(&:microposts).flatten
我只设法按日期订购了“关注者”,但这不是我想要的。我所做的所有尝试都给了我错误,所以我想我不知道某些语法。
欢迎任何帮助!
通常,您会添加一个order
子句,如下所示:
Micropost.where(:written_by => current_user.followeds).order(:created_at)
但是,您当前具有此行结构的方式不允许这样做,因为order
仅在 ActiveRecord::Relations 上可用,并且一旦这样做,map
您就不再有可用于链接的 Relation。
如果是这种情况,你会想要类似的东西:
current_user.followeds.map(&:microposts).flatten.sort_by { |m| m.created_at }
我认为你应该尝试从另一个角度来解决这个问题。
像这样的东西怎么样:
@microposts = Micropost.where(author_id: current_user.followed_ids).order(:created_at).all
您当然可能必须交换author_id
任何外键来识别用户 aMicropost
是由哪个用户编写的。
如果您想反转帖子(最新的优先),您只需编写即可order("created_at desc")
。