Ruby on rails 如何在rails上获取最近24小时的数据

Ruby on rails 如何在rails上获取最近24小时的数据,ruby-on-rails,ruby,sorting,activerecord,Ruby On Rails,Ruby,Sorting,Activerecord,有一个模型post。帖子由PM或用户创建。我想得到所有的职位,其中下午在过去24小时内创建的职位来顶部 我试着 posts.sort_by{|t| -t["role_id"] } 但是到了下午,所有的帖子都在上面。我想在顶部显示仅持续24小时的PM帖子。试试这个: Post.where('created_at>?',24小时前)。订单(role_id::asc)尝试以下操作: Post.where('created_at>?',24小时前)。order(role_id::asc)要确认您的问题

有一个模型
post
。帖子由PM或用户创建。我想得到所有的职位,其中下午在过去24小时内创建的职位来顶部

我试着

posts.sort_by{|t| -t["role_id"] }
但是到了下午,所有的帖子都在上面。我想在顶部显示仅持续24小时的PM帖子。

试试这个:
Post.where('created_at>?',24小时前)。订单(role_id::asc)

尝试以下操作:
Post.where('created_at>?',24小时前)。order(role_id::asc)

要确认您的问题,您希望所有记录和排序为:

  • pm在过去24小时内创建的记录(内部按其他内容排序)
  • 然后是按其他内容排序的所有其他记录
  • 我将创建一个合成布尔排序字段,如下所示:

    time = 24.hours.ago.strftime("%Y-%m-%d %M:%S")
    Post.order("(created_at < '#{time}' && cont_term = 24) ASC")
    
    time=24.hours.ago.strftime(“%Y-%m-%d%m:%S”)
    Post.order((在ASC创建)
    

    它将解析为0或1,因此您可以首先按此字段进行排序,并添加额外的order()子句以在这些组中进行排序。

    要确认您的问题,您希望所有记录和排序为:

  • pm在过去24小时内创建的记录(内部按其他内容排序)
  • 然后是按其他内容排序的所有其他记录
  • 我将创建一个合成布尔排序字段,如下所示:

    time = 24.hours.ago.strftime("%Y-%m-%d %M:%S")
    Post.order("(created_at < '#{time}' && cont_term = 24) ASC")
    
    time=24.hours.ago.strftime(“%Y-%m-%d%m:%S”)
    Post.order((在ASC创建)
    

    它将解析为0或1,因此您可以首先按此字段排序,并添加额外的order()子句以在这些组中排序。

    我想获得所有由PM在过去24小时内创建的帖子位于顶部的帖子。
    帖子。按{t | t.created_在<24.hours.ago???-t[“role|u id”]:t.id}排序。
    我不完全理解您的逻辑要求,但是,您可以使用
    排序依据
    块中的任何条件来实现您想要的功能。
    t.role\u id==PM\u id&&t.created\u at然而,我建议将两个查询组合起来:
    Post.where('created\u at>?',24.hours.ago.).where(role\u id:PM\u id)
    Post.where('created|u at我想获得所有由PM在过去24小时内创建的帖子位于
    帖子顶部的帖子。按{t|t.created_at<24.hours.ago???-t[“role|u id”]:t.id}排序)
    我不完全理解您的逻辑要求,但是您可以使用
    排序依据
    块中的任何条件来实现您想要的结果。
    t.role\u id==PM\u id&&t.created\u at然而,我建议将两个查询组合起来:
    Post.where('created\u at>?),24.hours.ago.).where(role\u id:PM\u id)
    Post.where('created_at