如何将“.order”调用添加到我检索的ActiveRecord集合中?

时间:2012-04-12 12:20:16

标签: ruby-on-rails ruby-on-rails-3 rails-3.1

我是这个Rails世界的新手。我无法理解这个问题。如何在创建微博的日期之前订购@microposts。

这是

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

我只是设法按日期命令'跟随',但这不是我想要的。我所做的所有尝试都给了我错误,所以我想我不知道一些语法。

欢迎任何帮助!

2 个答案:

答案 0 :(得分:2)

通常,您可以添加order子句,如:

Micropost.where(:written_by => current_user.followeds).order(:created_at)

您目前拥有此系列结构的方式不允许这样做,因为order仅适用于ActiveRecord :: Relations,而一旦执行map,您就不再拥有关系连锁。

如果是这种情况,你会想要这样的东西:

current_user.followeds.map(&:microposts).flatten.sort_by { |m| m.created_at }

答案 1 :(得分:0)

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

这样的事情怎么样:

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

当然,您可能必须交换author_id以获取您所拥有的Micropost用户所用的任何外键。

如果您想要撤消帖子(最新的帖子),您只需改为编写order("created_at desc")