2

我是这个 Rails 世界的新手。我无法解决这个问题。如何获取@microposts 按创建微帖子的日期排序。

这是行

 @microposts = current_user.followeds.map(&:microposts).flatten

我只设法按日期订购了“关注者”,但这不是我想要的。我所做的所有尝试都给了我错误,所以我想我不知道某些语法。

欢迎任何帮助!

4

2 回答 2

2

通常,您会添加一个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 }
于 2012-04-12T12:30:10.640 回答
0

我认为你应该尝试从另一个角度来解决这个问题。

像这样的东西怎么样:

@microposts = Micropost.where(author_id: current_user.followed_ids).order(:created_at).all

您当然可能必须交换author_id任何外键来识别用户 aMicropost是由哪个用户编写的。

如果您想反转帖子(最新的优先),您只需编写即可order("created_at desc")

于 2012-04-12T12:30:21.390 回答