【问题标题】:How can I grab all records except for the last 2 in ruby on rails?除了最后 2 条 ruby​​ on rails 之外,我如何获取所有记录?
【发布时间】:2012-04-18 11:21:26
【问题描述】:

正在显示和隐藏 cmets,默认情况下我显示 2 个最新的:

辅助方法:

  def comments(micropost_id)
        Comment.where(:micropost_id => micropost_id).limit(2).order("created_at DESC").reverse
  end

2个cmets会以这种方式显示:

评论 1(10 小时前发送)

评论 2(一小时前发送)

我有一个显示所有 cmets 可点击按钮,可将特定微博的所有 cmets 添加到列表中。这很好,除了我需要除了 2 个最新的 cmet 之外的所有 cmet。

使用offset(2) 会删除前 2 个 cmets。我基本上需要做相反的事情。所以想知道是否有什么我可以链接到 offset 方法来实现这一点,或者是否有专门的方法可以与 .offset() 做相反的事情?

提前致谢 亲切的问候

【问题讨论】:

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


    【解决方案1】:

    您可以按照 sergio 的建议进行操作,在从数据库加载它们后将最后两个删除,或者您可以反转查询中的 order 子句,偏移两个然后反转结果。

    【讨论】:

    • Comment.where(:micropost_id => params[:id]).order("created_at DESC").offset(2).reverse 成功了。谢谢
    【解决方案2】:

    我将从数据库中获取所有 cmets,并丢弃应用程序代码中的最后两个。这使得查询变得非常简单和高效。数据库传统上是最难扩展的组件,因此您不应对其造成任何不必要的负载。

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 1970-01-01
      • 2019-06-09
      • 2012-03-26
      • 1970-01-01
      • 2011-04-26
      • 2022-01-01
      • 2011-11-06
      • 1970-01-01
      相关资源
      最近更新 更多