通过最近的日期rails调用实例

时间:2015-12-25 01:03:17

标签: ruby-on-rails mongoid

我有一组博客帖子,我希望按照最近的日期顺序显示它们。如何在控制器中调用该方法

我试过

@post1 = Post.last

但我怎么能做到这个之前的3?

2 个答案:

答案 0 :(得分:1)

此:

@post1 = Post.last

没有像您认为的那样给出最后Post。如果您查看日志,您会看到以下内容:

selector={"$query"=>{}, "$orderby"=>{:_id=>-1}}

所以它将是“id订单中的最后一个”,而不是最后一个日期。如果你想要最后一个时间戳,那么你必须这样说:

@post1 = Post.order(:created_at => :desc).first

如果你有一个更符合你意图的日期或时间戳,你可以使用其他日期或时间戳代替:created_at

现在,如果你想要前面的那三个,那么抓住四个扔掉一个:

other_three = Post.order(:created_at => :desc).limit(4)[1.3] # or any of the ways

或者您可以使用offset跳过第一个:

other_three = Post.order(:created_at => :desc).offset(1).limit(3)

答案 1 :(得分:0)

这可以给你你想要的东西:

@post1 = Post.last(4).reverse[0..-2]

Post.last(4).reverse将按降序向您提供最后4条记录。然后,用这个:Post.last(4).reverse[0..-2]你抓住除了你想要的最后一个元素之外的所有元素。

如果您不想要descending订单,那么您可以在没有reverse部分的情况下执行此操作:

@post1 = Post.last(4)[0..-2]

希望这有帮助。

更新

你也可以这样做:

@posts = Post.limit(4).order(updated_at: :desc)[1..-1]