我是Rails这个世界的新手。我无法解决这个问题。如何获得micropost创建日期的@microposts。如何将`.order`调用添加到我检索的ActiveRecord集合中?
这是该行
@microposts = current_user.followeds.map(&:microposts).flatten
我只是设法日期“followeds”命令,但是这不是我所期待的。我所做的所有尝试都给了我错误,所以我想我不知道一些语法。
欢迎任何帮助!
我是Rails这个世界的新手。我无法解决这个问题。如何获得micropost创建日期的@microposts。如何将`.order`调用添加到我检索的ActiveRecord集合中?
这是该行
@microposts = current_user.followeds.map(&:microposts).flatten
我只是设法日期“followeds”命令,但是这不是我所期待的。我所做的所有尝试都给了我错误,所以我想我不知道一些语法。
欢迎任何帮助!
通常情况下,你会添加一个order
条款,如:
Micropost.where(:written_by => current_user.followeds).order(:created_at)
您目前有这样的线结构就不会允许,但是这样的,因为order
只在ActiveRecord的::关系可用,一旦你做了map
你不再有一个可用的连锁关系。
如果是这样的话,你会想是这样的:
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
你可能当然要为你必须确定哪些用户Micropost
是书面的任何外国密钥交换author_id
。
如果你想颠倒帖子(最新的第一个),你只需要写order("created_at desc")
。
完美,谢谢。 – 2012-04-12 13:09:16
太棒了!很好解释! (:microposts)中缺少“&”。应该是(&:microposts),我想。 ;-) – 2012-04-12 13:08:13
哎呀,是的;你是对的。我会编辑它。 – 2012-04-12 15:22:47